|
|
Message-ID: <CAGP1gyM8RjwT6YOk0iEGL_T_Ykk=XhpLtjTyyBoRtSyHXCC4BA@mail.gmail.com>
Date: Thu, 5 Oct 2023 14:26:42 -0400
From: Carl Chave <online@...ve.us>
To: musl@...ts.openwall.com, Carl Chave <online@...ve.us>, Rich Felker <dalias@...c.org>
Subject: Re: Hung processes with althttpd web server
> apk add musl-dbg
>
> the bt should be more useful then.
(gdb) bt
#0 __syscall_cp_c (nr=202, u=140049023633540, v=128, w=-2147483632,
x=0, y=0, z=0) at ./arch/x86_64/syscall_arch.h:61
#1 0x00007f5fb449b6c9 in __futex4_cp (to=0x0, val=-2147483632,
op=128, addr=0x7f5fb44e0884 <init_fini_lock+4>) at
src/thread/__timedwait.c:24
#2 __timedwait_cp (addr=addr@...ry=0x7f5fb44e0884 <init_fini_lock+4>,
val=val@...ry=-2147483632, clk=clk@...ry=0, at=at@...ry=0x0,
priv=priv@...ry=128) at src/thread/__timedwait.c:52
#3 0x00007f5fb449b76e in __timedwait (addr=addr@...ry=0x7f5fb44e0884
<init_fini_lock+4>, val=-2147483632, clk=clk@...ry=0, at=at@...ry=0x0,
priv=priv@...ry=128)
at src/thread/__timedwait.c:68
#4 0x00007f5fb449d9b1 in __pthread_mutex_timedlock (m=0x7f5fb44e0880
<init_fini_lock>, at=at@...ry=0x0) at
src/thread/pthread_mutex_timedlock.c:85
#5 0x00007f5fb449d7c0 in __pthread_mutex_lock
(m=m@...ry=0x7f5fb44e0880 <init_fini_lock>) at
src/thread/pthread_mutex_lock.c:9
#6 0x00007f5fb44a49ff in __libc_exit_fini () at ldso/dynlink.c:1442
#7 0x00007f5fb445b082 in exit (code=0) at src/exit/exit.c:30
#8 0x0000557471c3cf45 in ?? ()
#9 <signal handler called>
#10 0x00007f5fb43d3f20 in ?? () from /lib/libssl.so.3
#11 0x00007f5fb44a4a9d in __libc_exit_fini () at ldso/dynlink.c:1453
#12 0x00007f5fb445b082 in exit (code=0) at src/exit/exit.c:30
#13 0x0000557471c3cbe7 in ?? ()
#14 0x0000557471c3e934 in ?? ()
#15 0x0000557471c3c2d2 in ?? ()
#16 0x00007f5fb4462aad in libc_start_main_stage2 (main=0x557471c3b780,
argc=13, argv=0x7ffd0641b958) at src/env/__libc_start_main.c:95
#17 0x0000557471c3c31a in ?? ()
#18 0x000000000000000d in ?? ()
#19 0x00007ffd0641ce54 in ?? ()
#20 0x00007ffd0641ce66 in ?? ()
#21 0x00007ffd0641ce6d in ?? ()
#22 0x00007ffd0641ce6f in ?? ()
#23 0x00007ffd0641ce76 in ?? ()
#24 0x00007ffd0641ce79 in ?? ()
#25 0x00007ffd0641ce80 in ?? ()
#26 0x00007ffd0641ce89 in ?? ()
#27 0x00007ffd0641ce92 in ?? ()
#28 0x00007ffd0641cea2 in ?? ()
#29 0x00007ffd0641ceac in ?? ()
#30 0x00007ffd0641cec6 in ?? ()
#31 0x00007ffd0641cecd in ?? ()
#32 0x0000000000000000 in ?? ()
> in this case you can also look at
>
> (gdb) disas $rip-40,+80
(gdb) disas $rip-40,+80
Dump of assembler code from 0x7f5fb449c0b5 to 0x7f5fb449c105:
0x00007f5fb449c0b5 <__syscall_cp_c+19>: mov %r9,%r8
0x00007f5fb449c0b8 <__syscall_cp_c+22>: mov %fs:0x0,%rbp
0x00007f5fb449c0c1 <__syscall_cp_c+31>: movzbl 0x40(%rbp),%eax
0x00007f5fb449c0c5 <__syscall_cp_c+35>: mov 0x20(%rsp),%r9
0x00007f5fb449c0ca <__syscall_cp_c+40>: test %eax,%eax
0x00007f5fb449c0cc <__syscall_cp_c+42>: je 0x7f5fb449c0df
<__syscall_cp_c+61>
0x00007f5fb449c0ce <__syscall_cp_c+44>: dec %eax
0x00007f5fb449c0d0 <__syscall_cp_c+46>: je 0x7f5fb449c0d8
<__syscall_cp_c+54>
0x00007f5fb449c0d2 <__syscall_cp_c+48>: cmp $0x3,%rbx
0x00007f5fb449c0d6 <__syscall_cp_c+52>: jne 0x7f5fb449c0df
<__syscall_cp_c+61>
0x00007f5fb449c0d8 <__syscall_cp_c+54>: mov %rbx,%rax
0x00007f5fb449c0db <__syscall_cp_c+57>: syscall
=> 0x00007f5fb449c0dd <__syscall_cp_c+59>: jmp 0x7f5fb449c12b
<__syscall_cp_c+137>
0x00007f5fb449c0df <__syscall_cp_c+61>: push %r9
0x00007f5fb449c0e1 <__syscall_cp_c+63>: lea 0x3c(%rbp),%rax
0x00007f5fb449c0e5 <__syscall_cp_c+67>: mov %rsi,%rcx
0x00007f5fb449c0e8 <__syscall_cp_c+70>: mov %r10,%r9
0x00007f5fb449c0eb <__syscall_cp_c+73>: push %r8
0x00007f5fb449c0ed <__syscall_cp_c+75>: mov %rbx,%rsi
0x00007f5fb449c0f0 <__syscall_cp_c+78>: mov %rdx,%r8
0x00007f5fb449c0f3 <__syscall_cp_c+81>: mov %rdi,%rdx
0x00007f5fb449c0f6 <__syscall_cp_c+84>: mov %rax,%rdi
0x00007f5fb449c0f9 <__syscall_cp_c+87>: call 0x7f5fb449ef4a
<__syscall_cp_asm>
0x00007f5fb449c0fe <__syscall_cp_c+92>: pop %rsi
0x00007f5fb449c0ff <__syscall_cp_c+93>: pop %rdi
0x00007f5fb449c100 <__syscall_cp_c+94>: cmp $0xfffffffffffffffc,%rax
0x00007f5fb449c104 <__syscall_cp_c+98>: jne 0x7f5fb449c12b
<__syscall_cp_c+137>
End of assembler dump.
> (gdb) info reg
>
(gdb) info reg
rax 0xfffffffffffffe00 -512
rbx 0xca 202
rcx 0x7f5fb449c0dd 140049023353053
rdx 0xffffffff80000010 -2147483632
rsi 0x80 128
rdi 0x7f5fb44e0884 140049023633540
rbp 0x7f5fb44e0b48 0x7f5fb44e0b48 <builtin_tls+136>
rsp 0x7ffd06416680 0x7ffd06416680
r8 0x0 0
r9 0x0 0
r10 0x0 0
r11 0x246 582
r12 0x7f5fb44e0884 140049023633540
r13 0x80 128
r14 0x80 128
r15 0x0 0
rip 0x7f5fb449c0dd 0x7f5fb449c0dd <__syscall_cp_c+59>
eflags 0x246 [ PF ZF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
> since the address is the first arg to a futex syscall (rdi).
> then you can try to dig around to see where rdi points to
>
> (gdb) x/4wx $rdi-4
(gdb) x/4wx $rdi-4
0x7f5fb44e0880 <init_fini_lock>: 0x00000000 0x80000010
0x00000001 0x00000000
> (gdb) info sym $rdi
>
(gdb) info sym $rdi
init_fini_lock + 4 in section .bss of /lib/ld-musl-x86_64.so.1
Thanks for the reply and instruction.
Carl
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.