GNU bug report logs - #8961
stdbuf has no effect on some programs

Previous Next

Package: coreutils;

Reported by: Bruno Haible <bruno <at> clisp.org>

Date: Wed, 29 Jun 2011 21:00:03 UTC

Severity: normal

Done: Pádraig Brady <P <at> draigBrady.com>

Bug is archived. No further changes may be made.

Full log


Message #19 received at 8961 <at> debbugs.gnu.org (full text, mbox):

From: Bruno Haible <bruno <at> clisp.org>
To: Pádraig Brady <P <at> draigbrady.com>
Cc: 8961 <at> debbugs.gnu.org
Subject: Re: bug#8961: stdbuf has no effect on some programs
Date: Thu, 30 Jun 2011 01:42:16 +0200
Pádraig Brady wrote:
> The following shows I think that iconv is bypassing stdio and buffering internally?
> 
> (echo; sleep 3; echo) | ltrace iconv -f ASCII

This is true for the glibc 'iconv' program. But stdbuf also does not work with
'iconv' from GNU libiconv, and this program uses stdio in a very simple form:
It reads from stdin using fread(). It does *not* call setvbuf explicitly.

$ (echo; sleep 3; echo) | ltrace iconv -f ASCII
__libc_start_main(0x804a250, 3, 0xffe20264, 0x804b3c0, 0x804b420 <unfinished ...>
strrchr("iconv", '/')                                                                            = NULL
setlocale(0, "")                                                                                 = "de_DE.UTF-8"
setlocale(5, "")                                                                                 = "de_DE.UTF-8"
bindtextdomain("libiconv", "/packages/gnu/share/locale")                                         = "/packages/gnu/share/locale"
textdomain("libiconv")                                                                           = "libiconv"
strlen("-f")                                                                                     = 2
libiconv_open(0x804c262, 0xffe206d7, 0xffe206d4, 0xffe206d4, 0)                                  = 0x804f4a0
iconv_canonicalize(0x804c262, 0xffe206d7, 0xffe206d4, 0xffe206d4, 0)                             = 0xf7effecc
iconv_canonicalize(0xffe206d7, 0xffe206d7, 0xffe206d4, 0xffe206d4, 0)                            = 0xf7efff38
libiconvctl(0x804f4a0, 6, 0xffe201a0, 0xffe206d7, 0)                                             = 0
libiconvctl(0x804f4a0, 5, 0xffe20190, 0x804f4a0, 0)                                              = 0
dcgettext(0, 0x804c27e, 5, 0, 0)                                                                 = 0x8057b50
libiconv(0x804f4a0, 0, 0, 0, 0)                                                                  = 0
fread(0xffe1f110, 1, 4096, 0xf7df5420)                                                           = 2
libiconv(0x804f4a0, 0xffe1d100, 0xffe1d104, 0xffe1d108, 0xffe1d10c)                              = 0
__errno_location()                                                                               = 0xf7cb5688
fwrite("\n\n", 1, 2, 0xf7df54c0

)                                                                 = 2
fread(0xffe1f110, 1, 4096, 0xf7df5420)                                                           = 0
libiconv(0x804f4a0, 0, 0, 0xffe1d0f4, 0xffe1d0f8)                                                = 0
ferror(0xf7df5420)                                                                               = 0
libiconv_close(0x804f4a0, 0xf7df5420, 0x8057b50, 0, 0)                                           = 0
ferror(0xf7df54c0)                                                                               = 0
fclose(0xf7df54c0)                                                                               = 0
exit(0 <unfinished ...>
+++ exited (status 0) +++

$ (echo Hello; sleep 3; echo World) | stdbuf iconv -f ASCII
Hello
World

All output comes after 3 seconds - stdbuf has no effect.

I'm using glibc-2.8.

Bruno
-- 
In memoriam José Olaya <http://es.wikipedia.org/wiki/José_Olaya>




This bug report was last modified 13 years and 326 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.