gen_wctype segfaults with gcc 4

Michael Troß michael at tross.org
Wed Dec 7 09:48:49 UTC 2005


Hi list,

gen_wctype segfaults on my system when optimized with -O2. It does work 
without optimization, even -O1 does not cause the segfault.

Problem is in newopt, at gen_wctype.c:865,
    memcpy(tbl->ti + i * blocksize, ti[uniqblock[i]], blocksize);

What may be wrong here?


uClibc 0.9.28
gcc 4.0.2

GNU gdb 6.3
(gdb) set args en_US
(gdb) r
Starting program: 
/work/T2/t2/src.uclibc.interview.20051207.020038.10127.michael/uClibc-0.9.28/extra/locale/gen_wctype 

typecount[ 0] =    95084  C_unclassified
typecount[ 1] =    88837  C_alpha_nonupper_nonlower
typecount[ 2] =      756  C_alpha_lower
typecount[ 3] =        4  C_alpha_upper_lower
typecount[ 4] =      745  C_alpha_upper
typecount[ 5] =       10  C_digit
typecount[ 6] =    11088  C_punct
typecount[ 7] =        2  C_graph
typecount[ 8] =        0  C_print_space_nonblank
typecount[ 9] =       15  C_print_space_blank
typecount[10] =        0  C_space_nonblank_noncntrl
typecount[11] =        0  C_space_blank_noncntrl
typecount[12] =        6  C_cntrl_space_nonblank
typecount[13] =        1  C_cntrl_space_blank
typecount[14] =       60  C_cntrl_nonspace
typecount[15] =        0  empty_slot
optimizing is* table..
ishift 1  tshift 0  size 49441
ishift 2  tshift 0  size 25561
ishift 3  tshift 0  size 14365
ishift 4  tshift 0  size 9845
ishift 5  tshift 0  size 8453
ishift 6  tshift 0  size 7909
ishift 1  tshift 1  size 25302
ishift 2  tshift 1  size 13560
ishift 3  tshift 1  size 8228
ishift 4  tshift 1  size 5996
ishift 5  tshift 1  size 4956
ishift 6  tshift 1  size 4796
ishift 1  tshift 2  size 13746
ishift 2  tshift 2  size 8008
ishift 3  tshift 2  size 5356
ishift 4  tshift 2  size 4068
ishift 5  tshift 2  size 3604
ishift 1  tshift 3  size 8642
ishift 2  tshift 3  size 5780
ishift 3  tshift 3  size 4368
ishift 4  tshift 3  size 3752
ishift 5  tshift 3  size 3704
ishift 1  tshift 4  size 7070
ishift 2  tshift 4  size 5596
ishift 3  tshift 4  size 4904
ishift 4  tshift 4  size 4688
ishift 1  tshift 5  size 7078
ishift 2  tshift 5  size 6348
ishift 3  tshift 5  size 6048
ishift 4  tshift 5  size 5984
ishift 1  tshift 6  size 7222
ishift 2  tshift 6  size 6880
ishift 3  tshift 6  size 6752
ishift 4  tshift 6  size 6752
ishift 1  tshift 7  size 8016
ishift 2  tshift 7  size 7856
ishift 3  tshift 7  size 7808
ishift 1  tshift 8  size 10488
ishift 2  tshift 8  size 10416
ishift 3  tshift 8  size 10416
ishift 1  tshift 9  size 14472
ishift 2  tshift 9  size 14448
ishift 1  tshift 10  size 20560
ishift 2  tshift 10  size 20556
smallest = 3604
setting ishift 5  tshift 2

Program received signal SIGSEGV, Segmentation fault.
0x08049176 in newopt (
     ut=0xbfd928ac 
"ìëììçä²³±ªª°\225\206\206\211ììììäÏÛϪª«©\206\206\207\206\222\222\222\222\222\222\222\232\237s\222\222\222\222\222¥\231 €\216\223\234¡\215[\213\237\235\222\222\230\222\222\222\222\222+\222\217", 
usize=Variable "usize" is not available.
)
     at gen_wctype.c:865
865                                     memcpy(tbl->ti + i * blocksize, 
ti[uniqblock[i]], blocksize);
(gdb) bt
#0  0x08049176 in newopt (
     ut=0xbfd928ac 
"ìëììçä²³±ªª°\225\206\206\211ììììäÏÛϪª«©\206\206\207\206\222\222\222\222\222\222\222\232\237s\222\222\222\222\222¥\231 €\216\223\234¡\215[\213\237\235\222\222\230\222\222\222\222\222+\222\217", 
usize=Variable "usize" is not available.
)
     at gen_wctype.c:865
#1  0x08049084 in newopt (
     ut=0xbfdf2d5c "îîîîÞÌÌîîîîîîîîîifffffffUUUUUfffF", 'D' <repeats 12 
times>, "dff&", '"' <repeats 12 times>, "bfæ", 'î' <repeats 16 times>, 
"fffffaffff&ffaff", 'D' <repeats 11 times>, "dDDD$", '"' <repeats 11 
times>, "b\"\"\"\"", '$' <repeats 28 times>, "ABBBBBBB\022", '$' 
<repeats 23 times>, "DBB\"A$$DBD\022D"..., usize=Variable "usize" is not 
available.
)
     at gen_wctype.c:871
#2  0x08049917 in main (argc=134531928, argv=0xbfe232b4) at gen_wctype.c:505
(gdb)


Michael




More information about the uClibc mailing list