История изменений
Исправление xaizek, (текущая версия) :
Воспроизводится, если вместо return 0
делать exit(0)
. Вот backtrace:
(gdb) bt
#0 0x00007ffff7a85be0 in do_length () from /lib64/libc.so.6
#1 0x00007ffff7a8560d in __GI__IO_wfile_sync () from /lib64/libc.so.6
#2 0x00007ffff7a8c2d7 in _IO_default_setbuf () from /lib64/libc.so.6
#3 0x00007ffff7a88d89 in __GI__IO_file_setbuf () from /lib64/libc.so.6
#4 0x00007ffff7a8cd91 in _IO_cleanup () from /lib64/libc.so.6
#5 0x00007ffff7a4857b in __run_exit_handlers () from /lib64/libc.so.6
#6 0x00007ffff7a48625 in exit () from /lib64/libc.so.6
#7 0x000000000040083a in main () at tst2.c:13
do_length()
как-то затирает стек и всё падает при выходе из этой функции. Возможно, что это вина iconv, так как при определённой длине ввода можно получить:
a.out: ../iconv/skeleton.c:415: __gconv_transform_utf8_internal: Assertion `outbufstart == ((void *)0)' failed.
Исходная версия xaizek, :
Воспроизводится, если вместо return 0
делать exit(0)
. Вот backtrace:
(gdb) bt
#0 0x00007ffff7a85be0 in do_length () from /lib64/libc.so.6
#1 0x00007ffff7a8560d in __GI__IO_wfile_sync () from /lib64/libc.so.6
#2 0x00007ffff7a8c2d7 in _IO_default_setbuf () from /lib64/libc.so.6
#3 0x00007ffff7a88d89 in __GI__IO_file_setbuf () from /lib64/libc.so.6
#4 0x00007ffff7a8cd91 in _IO_cleanup () from /lib64/libc.so.6
#5 0x00007ffff7a4857b in __run_exit_handlers () from /lib64/libc.so.6
#6 0x00007ffff7a48625 in exit () from /lib64/libc.so.6
#7 0x000000000040083a in main () at tst2.c:13
do_length()
как-то затирает стек. Возможно, что это вина iconv, так как при определённой длине ввода можно получить:
a.out: ../iconv/skeleton.c:415: __gconv_transform_utf8_internal: Assertion `outbufstart == ((void *)0)' failed.