[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#234691: sparc64 too..



retitle 234691 mkisofs: SIGBUS on sparc32 + sparc64
thanks for all the fish

Howdy,

Not only have I experienced the SIGBUS on a sparc64 box as well, but I've
narrowed it down to this iconv call in mkisofs/joliet.c:

convert_to_unicode (
    buffer=0xefff9e33 ' ' <repeats 74 times>, "2004042723225600ð2004042723225600ð", '0' <repeats 16 times>, size=37, source=0x0, inls=0xb4a58) at joliet.c:266
266                     if(iconv(inls->iconv_d, &inptr, &inleft, &outptr, &outleft) ==
(gdb) info locals
inptr = 0xc17c8 ' ' <repeats 37 times>, "ER & CD"
outptr = 0xefff9e33 ' ' <repeats 74 times>, "2004042723225600ð2004042723225600ð", '0' <repeats 16 times>
inleft = 44
outleft = 37
inlen = 44
tmpbuf = (unsigned char *) 0xc17c8 ' ' <repeats 37 times>, "ER & CD"
i = 0
j = 44
ul = 120 'x'
uc = 196 'Ä'
up = (unsigned char *) 0x0

It's impossible to debug into iconv because of the loop.c stuff used in glibc
that does not produce accurate debugging information. (Like, they have a
common body, and they fill in all sorts of #defines, then include a loop.c
template. Disgusting!)

Once iconv goes batty, here's a backtrace:

(gdb) bt
#0  0x70050d68 in __gconv_transform_internal_ucs2 (step=0xb469c, data=0xb4b14, 
    inptrp=0xefff9904, inend=0xb4bf0 "", outbufstart=0x0, 
    irreversible=0xefff9a04, do_flush=0, consume_incomplete=0) at loop.c:311
#1  0x701c4ca8 in gconv () from /usr/lib/gconv/ISO8859-1.so
#2  0x7004a29c in __gconv (cd=0xb4ae8, inbuf=0xefff9a7c, inbufend=0xc17f4 "", 
    outbuf=0xefff9a74, outbufend=0xc17c8 ' ' <repeats 37 times>, "ER & CD", 
    irreversible=0xefff9a04) at gconv.c:63
#3  0x70049708 in iconv (cd=0xb4ae8, inbuf=0xefff9a7c, inbytesleft=0xefff9a78, 
    outbuf=0xefff9a74, outbytesleft=0xefff9a70) at iconv.c:53
#4  0x000241c8 in convert_to_unicode (
    buffer=0xefff9e33 ' ' <repeats 74 times>, "2004042723225600ð2004042723225600ð", '0' <repeats 16 times>, size=37, source=0x0, inls=0xb4a58) at joliet.c:266
#5  0x0002450c in get_joliet_vol_desc (jvol_desc=0xefff9b50) at joliet.c:486
#6  0x00025a40 in jvd_write (outfile=0x0) at joliet.c:1450
#7  0x000141b8 in main (argc=10, argv=0xeffff9f4) at mkisofs.c:3396
(gdb) x/i 0x70050d68
0x70050d68 <__gconv_transform_internal_ucs2+1572>:      sth  %g2, [ %o4 ]
(gdb) info reg
[...]
g2             0x20     32
[...]
o4             0xefff9e33       -268460493
[...]
(gdb) info locals
trans = (struct __gconv_trans_data *) 0x0
inptr = (const unsigned char *) 0xffff <Address 0xffff out of bounds>
lirreversiblep = (size_t *) 0xefff986c
unaligned = 1
outbuf = (
    unsigned char *) 0xefff9e33 ' ' <repeats 74 times>, "2004042723225600ð2004042723225600ð", '0' <repeats 16 times>
outend = (
    unsigned char *) 0xefff9e58 ' ' <repeats 37 times>, "2004042723225600ð2004042723225600ð", '0' <repeats 16 times>
lirreversible = 0
next_step = (struct __gconv_step *) 0xb46d8
next_data = (struct __gconv_step_data *) 0xb4b38
fct = 0
status = 1

Does this help any? I'm hoping *someone* in debian-glibc can tell what's
going on...

-- 
Joshua Kwan

Attachment: signature.asc
Description: Digital signature


Reply to: