[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [libmicrohttpd] Recursive lock in GIT
From: |
Evgeny Grin |
Subject: |
Re: [libmicrohttpd] Recursive lock in GIT |
Date: |
Sun, 21 May 2017 15:21:31 +0300 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 |
Hi Markus,
Thanks for report!
Could you provide more information? Why connection was closed right
after resume?
--
Wishes,
Evgeny
On 21.05.2017 13:52, Markus Doppelbauer wrote:
> Hello,
>
> I have updated "0.9.53" to GIT - maybe a week ago.
> There is a recursive lock to "daemon->cleanup_connection_mutex"
>
> ------------
>
> __owner=6065 holds the lock - but tries to lock again in "connection.c:2837"
>
> The callstack:
> "resume_suspended_connections()" at daemon.c:2908
> "MHD_connection_handle_idle()" at connection.c:3344
> "cleanup_connection()" at connection.c:2837
>
> The mutex is locked in "daemon.c":"resume_suspended_connections()" - frame 5
> The mutex is locked again in "connection.c":"cleanup_connection()" - frame 3
>
> ------------
>
> (gdb) thread apply all bt
>
> Thread 4 (Thread 0x7f4166ef8700 (LWP 6065)):
> #0 __lll_lock_wait () at
> ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
> #1 0x0000003c0c0095d8 in _L_lock_854 () from /lib64/libpthread.so.0
> #2 0x0000003c0c0094a7 in __pthread_mutex_lock (mutex=0x36e4868) at
> pthread_mutex_lock.c:61
> #3 0x00000000004998c4 in cleanup_connection (connection=0x7f4158000e50)
> at /.../microhttpd/connection.c:2837
> #4 0x000000000049b830 in MHD_connection_handle_idle
> (connection=0x7f4158000e50) at /.../microhttpd/connection.c:3344
> #5 0x000000000049e659 in resume_suspended_connections
> (daemon=0x36e4720) at /.../microhttpd/daemon.c:2908
> #6 0x00000000004a404c in MHD_epoll (daemon=0x36e4720, may_block=1) at
> /.../microhttpd/daemon.c:4238
> #7 0x00000000004a4825 in MHD_select_thread (cls=0x36e4720) at
> /.../microhttpd/daemon.c:4542
> #8 0x0000003c0c007aa1 in start_thread (arg=0x7f4166ef8700) at
> pthread_create.c:301
> #9 0x0000003c0bce8bcd in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:115
>
> Thread 2 (Thread 0x7f41417fb700 (LWP 22899)):
> #0 __lll_lock_wait () at
> ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
> #1 0x0000003c0c0095d8 in _L_lock_854 () from /lib64/libpthread.so.0
> #2 0x0000003c0c0094a7 in __pthread_mutex_lock (mutex=0x36e4868) at
> pthread_mutex_lock.c:61
> #3 0x000000000049eb16 in MHD_resume_connection
> (connection=0x7f41580015e0) at /.../microhttpd/daemon.c:2808
> [snip: processes request]
>
> Thread 1 (Thread 0x7f41aeef68a0 (LWP 6058)):
> [snip: main() thread]
>
> ------------
>
> (gdb) thread 2
> (gdb) frame 3
> (gdb) p daemon->cleanup_connection_mutex
> $2 = {__data = {__lock = 2, __count = 0, __owner = 6065, __nusers = 1,
> __kind = 0, __spins = 0, __list = {__prev = 0x0, __next = 0x0}},
> __size = "\002\000\000\000\000\000\000\000\261\027\000\000\001",
> '\000' <repeats 26 times>, __align = 2}
>
> ------------
>
> (gdb) thread 4
> (gdb) frame 3
> (gdb) p daemon->cleanup_connection_mutex
> $3 = {__data = {__lock = 2, __count = 0, __owner = 6065, __nusers = 1,
> __kind = 0, __spins = 0, __list = {__prev = 0x0, __next = 0x0}},
> __size = "\002\000\000\000\000\000\000\000\261\027\000\000\001",
> '\000' <repeats 26 times>, __align = 2}
signature.asc
Description: OpenPGP digital signature