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.