While running spamassassin (the one in OpenBSD 4.0) my Perl (also OBSD 4.0)
happened to segfault when learning what is spam. There is no suspicion on bad
hardware, and this situation already happened in the past several times
ocassionally.
There were 9153 spam messages in the folder. I'll try if I can isolate a single
one that triggers it. It's actually segfaulting in libc in some hash
manipulation routine but it's clear to me this can be a delayed memory
corruption
bug caused by some Perl binding or Perl itself.
#0 0x00639d71 in memmove () from /usr/lib/libc.so.39.3
No symbol table info available.
#1 0x0062fcb4 in __delpair (hashp=0x7d5a5200, bufp=0x870d8040, ndx=1707) at
/usr/src/lib/libc/db/hash/hash_page.c:140
i = 2127618048
src = 0x7ed0e000
"\232\b{?v?q?l?g?b?]?X?S\b{?v?q?l?g?b?]?X?S?N?I?D???:?5?0?+?&?!?\234?\227?\222?\215?\210?\203?~?y?t?o?j?e?`?[?V?Q?L?G?B?=?8?3?.?)?$?\037?\032?\025?\020?\v?\006?\001?|>w>r>m>h>c>^>Y>T>O>J>E>@>;>6>1>,>'>">\235>\230>\223>\216>\211>\204>\177>z>u>p>k>f>a>\\>W>R>M>H>C>>>"...
dst = 0xffffec1b <Address 0xffffec1b out of bounds>
bp = (u_int16_t *) 0x7d5a5200
newoff = 4107
pairlen = 18
n = 2202
#2 0x0062b812 in hash_access (hashp=0x7d5a5200, action=HASH_PUT,
key=0xcf7e2190, val=0xcf7e2188) at /usr/src/lib/libc/db/hash/hash.c:670
rbufp = (BUFHEAD *) 0x870d8040
bufp = (BUFHEAD *) 0x267a2a96
save_bufp = (BUFHEAD *) 0x870d8040
bp = (u_int16_t *) 0xffffec1b
n = 2202
ndx = 1707
off = -1953344059
size = 5
kp = 0x8b9255c0 "\020\237^5u"
pageno = 4107
#3 0x0557f083 in XS_DB_File_STORE () from
/usr/libdata/perl5/i386-openbsd/5.8.8/auto/DB_File/DB_File.so
No symbol table info available.
#4 0x067ddd08 in Perl_pp_entersub () at /usr/src/gnu/usr.bin/perl/pp_hot.c:2877
av = (AV * const) 0x267a81b0
items = 645610516
markix = 0
sp = (SV **) 0x859c428c
sv = (SV *) 0x876f43e4
gv = (GV *) 0x5
stash = (HV *) 0x0
cv = (CV *) 0x876f43e4
cx = (PERL_CONTEXT *) 0x267a81b0
gimme = 0
#5 0x068085b9 in Perl_runops_standard () at /usr/src/gnu/usr.bin/perl/run.c:37
No locals.
#6 0x067ef008 in S_call_body (myop=0xcf7e22f0, is_eval=27 '\033') at
/usr/src/gnu/usr.bin/perl/perl.c:2733
No locals.
#7 0x067eef2e in Perl_call_sv (sv=0x85062030, flags=66) at
/usr/src/gnu/usr.bin/perl/perl.c:2609
sp = (SV **) 0x859c428c
myop = {op_next = 0x0, op_sibling = 0x0, op_ppaddr = 0x67dda50
<Perl_pp_entersub>, op_targ = 0, op_type = 0, op_seq = 0, op_flags = 66 'B',
op_private = 0 '\0',
op_first = 0x0, op_other = 0x0}
method_op = {op_next = 0xcf7e22f0, op_sibling = 0x0, op_ppaddr =
0x67de738 <Perl_pp_method>, op_targ = 0, op_type = 0, op_seq = 0, op_flags = 0
'\0',
op_private = 0 '\0', op_first = 0x0}
oldmark = 0
retval = 0
oldscope = 23
oldcatch = 0 '\0'
oldop = (OP *) 0x7c774380
cur_env = {je_prev = 0x8b9255e0, je_buf = {-2063196112, -813817160,
108820867, -2063196112, 0, 116, 0, 0, 0, 0, 645598328}, je_ret = -2063196112,
je_mustcatch = 120 'x'}
#8 0x067ee93c in Perl_call_method (methname=0x26796ab5 "STORE", flags=2) at
/usr/src/gnu/usr.bin/perl/perl.c:2542
No locals.
#9 0x067cc38c in S_magic_methcall (sv=0x876a4d98, mg=0x870d8420,
meth=0x26796ab5 "STORE", flags=2, n=3, val=0x7ed1100b) at
/usr/src/gnu/usr.bin/perl/mg.c:1492
sp = (SV **) 0x859c428c
#10 0x067cc6e0 in Perl_magic_setpack (sv=0x876a4d98, mg=0x870d8420) at
/usr/src/gnu/usr.bin/perl/mg.c:1529
next = (PERL_SI *) 0x3ffff402
sp = (SV **) 0x267b3578
#11 0x067ca62d in Perl_mg_set (sv=0x876a4d98) at
/usr/src/gnu/usr.bin/perl/mg.c:236
vtbl = (const MGVTBL *) 0x3ffff402
mgs_ix = 792
mg = (MAGIC *) 0xffffec1b
nextmg = (MAGIC *) 0x0
#12 0x067d7535 in Perl_pp_sassign () at /usr/src/gnu/usr.bin/perl/pp_hot.c:125
sp = (SV **) 0x816e6004
right = (SV *) 0x876a4d98
left = (SV *) 0x8506212c
#13 0x068085b9 in Perl_runops_standard () at /usr/src/gnu/usr.bin/perl/run.c:37
No locals.
#14 0x067ee5df in S_run_body (oldscope=1) at
/usr/src/gnu/usr.bin/perl/perl.c:2368
No locals.
#15 0x067ee533 in perl_run (my_perl=0x7dcc3030) at
/usr/src/gnu/usr.bin/perl/perl.c:2285
oldscope = 1
ret = 1073738754
cur_env = {je_prev = 0x267b3740, je_buf = {108978918, 645598328,
-813816740, -813816616, -813816484, -813816560, -813816568, 0, -2025615324,
160, -813826009},
je_ret = 3, je_mustcatch = 1 '\001'}
#16 0x1c0012a6 in main ()
No symbol table info available.
CL<