Here is some stacktrace. --->8-------->8---- (gdb) frame #0 _hurd_fd_write (fd=fd@entry=0x1012dde10, buf=buf@entry=0x200000000dd0, nbytes=nbytes@entry=0x10103da78, offset=offset@entry=-1) at ./hurd/fd-write.c:39 39 *nbytes = wrote; (gdb) bt #0 _hurd_fd_write (fd=fd@entry=0x1012dde10, buf=buf@entry=0x200000000dd0, nbytes=nbytes@entry=0x10103da78, offset=offset@entry=-1) at ./hurd/fd-write.c:39 #1 0x000000010119cdaa in __GI___write_nocancel (fd=fd@entry=3, buf=buf@entry=0x200000000dd0, nbytes=<optimized out>, nbytes@entry=13) at ../sysdeps/mach/hurd/write_nocancel.c:26 #2 0x0000000101197015 in __GI___libc_write (fd=3, buf=0x200000000dd0, nbytes=13) at ../sysdeps/mach/hurd/write.c:26 #3 0x00000001010ffae5 in _IO_new_file_write (f=0x200000000bf0, data=0x200000000dd0, n=13) at ./libio/fileops.c:1181 #4 0x00000001010fdc6f in new_do_write (fp=0x200000000bf0, data=0x200000000dd0 "Hello World!\n", to_do=to_do@entry=13) at ./libio/libioP.h:1030 #5 0x00000001010feac1 in _IO_new_do_write (fp=fp@entry=0x200000000bf0, data=<optimized out>, to_do=13) at ./libio/fileops.c:426 #6 0x00000001010fe320 in _IO_new_file_close_it (fp=fp@entry=0x200000000bf0) at ./libio/fileops.c:135 #7 0x00000001010f09a0 in _IO_new_fclose (fp=0x200000000bf0) at ./libio/iofclose.c:53 #8 0x000000010000087a in main (argc=2, argv=0x10103dcf8) at fclose.c:17 (gdb) l 34 } 35 36 err = HURD_FD_PORT_USE_CANCEL (fd, _hurd_ctty_output (port, ctty, writefd)); 37 38 if (! err) 39 *nbytes = wrote; 40 41 return err; 42 } (gdb) p *nbytes $23 = 13 (gdb) p wrote $24 = 15 (gdb) p err $25 = ESUCCESS (gdb) --->8-------->8----
It's odd that the written bytes are greater than the requested to write bytes. Although I still don't know if that's the culprit.