amd64/95418: pthread segmentation fault
Pavel Merdin
fbug1 at merdin.com
Thu Apr 6 19:09:49 UTC 2006
>Number: 95418
>Category: amd64
>Synopsis: pthread segmentation fault
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: freebsd-amd64
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Apr 06 15:40:15 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Pavel Merdin
>Release: FreeBSD 6-stable
>Organization:
Fotki Inc.
>Environment:
6.1-PRERELEASE FreeBSD 6.1-PRERELEASE #6: Fri Feb 17 12:47:19 EST 2006
>Description:
The pthread library forces mysql 4.1.18-log to crash with a message like:
Feb 19 14:26:00 kernel: pid 33539 (mysqld), uid 1001: exited on signal 11
It happens when mysql is heavily used.
Seems like compiler bug as AX register cannot normally be equal to 218
at 0x800d13aff.
gdb dump:
Program received signal SIGSEGV, Segmentation fault.
0x0000000800d13aff in _thr_gc (curthread=0x925000)
at /usr/src/lib/libpthread/thread/thr_kern.c:1343
1343 TAILQ_INSERT_HEAD(&worklist, kseg, kg_qe);
Current language: auto; currently c
No locals.
(gdb) x/30i 0x0000000800d13a50
0x800d13a50 <_thr_gc+1296>: out %eax,$0xe8
0x800d13a52 <_thr_gc+1298>: jle 0x800d13a1c <_thr_gc+1244>
0x800d13a54 <_thr_gc+1300>: (bad)
0x800d13a55 <_thr_gc+1301>: decl 0x64(%rbx,%rcx,4)
0x800d13a59 <_thr_gc+1305>: and $0x10,%al
0x800d13a5b <_thr_gc+1307>: test %r12,%r12
0x800d13a5e <_thr_gc+1310>: jne 0x800d139f1 <_thr_gc+1201>
0x800d13a60 <_thr_gc+1312>:
mov 1092225(%rip),%rsi # 0x800e1e4e8 <_thread_list+12472>
0x800d13a67 <_thr_gc+1319>: mov (%rsi),%eax
0x800d13a69 <_thr_gc+1321>: test %eax,%eax
0x800d13a6b <_thr_gc+1323>: jle 0x800d13c3a <_thr_gc+1786>
0x800d13a71 <_thr_gc+1329>:
cmpl $0x64,1092504(%rip) # 0x800e1e610 <_thread_off_tcb+184>
0x800d13a78 <_thr_gc+1336>: jle 0x800d13bf3 <_thr_gc+1715>
0x800d13a7e <_thr_gc+1342>: callq 0x800d0fd80 <_kse_critical_enter>
0x800d13a83 <_thr_gc+1347>: mov 0x180(%r13),%rdx
0x800d13a8a <_thr_gc+1354>: mov %rax,%rbp
0x800d13a8d <_thr_gc+1357>: mov 0x130(%rdx),%eax
0x800d13a93 <_thr_gc+1363>: cmp $0x4,%eax
0x800d13a96 <_thr_gc+1366>: jg 0x800d13c00 <_thr_gc+1728>
0x800d13a9c <_thr_gc+1372>: inc %eax
0x800d13a9e <_thr_gc+1374>:
lea 1092571(%rip),%rdi # 0x800e1e680 <_thread_off_tcb+296>
0x800d13aa5 <_thr_gc+1381>: mov %eax,0x130(%rdx)
0x800d13aab <_thr_gc+1387>: mov 0x180(%r13),%rax
0x800d13ab2 <_thr_gc+1394>: xor %edx,%edx
0x800d13ab4 <_thr_gc+1396>: movslq 0x130(%rax),%rsi
0x800d13abb <_thr_gc+1403>: lea (%rsi,%rsi,4),%rsi
0x800d13abf <_thr_gc+1407>: lea 0x40(%rax,%rsi,8),%rsi
0x800d13ac4 <_thr_gc+1412>: callq 0x800d19830 <_lock_acquire>
0x800d13ac9 <_thr_gc+1417>:
mov 1092120(%rip),%rsi # 0x800e1e4e8 <_thread_list+12472>
0x800d13ad0 <_thr_gc+1424>: mov %rsp,%rcx
(gdb) x/25i
0x800d13ad3 <_thr_gc+1427>: jmp 0x800d13b0b <_thr_gc+1483>
0x800d13ad5 <_thr_gc+1429>: mov 0x28(%rbx),%rax
0x800d13ad9 <_thr_gc+1433>: mov %rax,0x28(%rdx)
0x800d13add <_thr_gc+1437>: mov 0x28(%rbx),%rax
0x800d13ae1 <_thr_gc+1441>: mov %rdx,(%rax)
0x800d13ae4 <_thr_gc+1444>: mov (%rsp),%rdx
0x800d13ae8 <_thr_gc+1448>:
decl 1092386(%rip) # 0x800e1e610 <_thread_off_tcb+184>
0x800d13aee <_thr_gc+1454>: test %rdx,%rdx
0x800d13af1 <_thr_gc+1457>: mov %rdx,0x20(%rbx)
0x800d13af5 <_thr_gc+1461>: je 0x800d13b53 <_thr_gc+1555>
0x800d13af7 <_thr_gc+1463>: mov (%rsp),%rax
0x800d13afb <_thr_gc+1467>: lea 0x20(%rbx),%rdx
0x800d13aff <_thr_gc+1471>: mov %rdx,0x28(%rax)
0x800d13b03 <_thr_gc+1475>: mov %rbx,(%rsp)
0x800d13b07 <_thr_gc+1479>: mov %rcx,0x28(%rbx)
0x800d13b0b <_thr_gc+1483>: mov (%rsi),%eax
0x800d13b0d <_thr_gc+1485>: test %eax,%eax
0x800d13b0f <_thr_gc+1487>: jle 0x800d13b60 <_thr_gc+1568>
0x800d13b11 <_thr_gc+1489>:
cmpl $0x64,1092344(%rip) # 0x800e1e610 <_thread_off_tcb+184>
0x800d13b18 <_thr_gc+1496>: jle 0x800d13b69 <_thr_gc+1577>
0x800d13b1a <_thr_gc+1498>:
mov 1092383(%rip),%rbx # 0x800e1e640 <_thread_off_tcb+232>
0x800d13b21 <_thr_gc+1505>: mov 0x20(%rbx),%rdx
0x800d13b25 <_thr_gc+1509>: test %rdx,%rdx
0x800d13b28 <_thr_gc+1512>: jne 0x800d13ad5 <_thr_gc+1429>
0x800d13b2a <_thr_gc+1514>: mov 0x28(%rbx),%rax
(gdb) info registers
rax 0xd8 216
rbx 0x709adf00 1889197824
rcx 0x7fffffffe700 140737488348928
rdx 0x709adf20 1889197856
rsi 0x800e1eb30 34374544176
rdi 0x800e1e680 34374542976
rbp 0x8008ac060 0x8008ac060
rsp 0x7fffffffe700 0x7fffffffe700
r8 0x0 0
r9 0x1 1
r10 0x7fffff12ffd8 140737472823256
r11 0x1000 4096
r12 0x0 0
r13 0x925000 9588736
r14 0x7fffffffe720 140737488348960
r15 0x23 35
rip 0x800d13aff 0x800d13aff <_thr_gc+1471>
eflags 0x10206 66054
cs 0x2b 43
ss 0x23 35
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
>How-To-Repeat:
Try to load mysql with queries and many connections.
I used a real application under heavy load.
>Fix:
Recompiling pthread without -O2 fixes the issue.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-amd64
mailing list