Re: segfault analysis

2015-10-23 Thread Yann Ylavic
On Fri, Oct 23, 2015 at 10:42 AM, Stefan Eissing wrote: > > Can I recover any files/lines from these > === Backtrace: = > /lib64/libc.so.6[0x32a507174f] > /lib64/libc.so.6(cfree+0x4b)[0x32a5075a4b] >

Re: segfault analysis

2015-10-23 Thread Stefan Eissing
Yes, you are correct. The mutex holds. I had my head in java synchronized waits for a second *shudder*... > Am 23.10.2015 um 12:05 schrieb Yann Ylavic : > > On Fri, Oct 23, 2015 at 11:59 AM, Stefan Eissing > wrote: >> >> The problem with the

Re: segfault analysis

2015-10-23 Thread Stefan Eissing
;-) The problem with the unlock in release is that the h2_mplx might have been destroyed by then, as the signal might give the lock to someone waiting. I could move that mutex into h2_session ownership, just lending it to h2_mplx... //Stefan > Am 23.10.2015 um 11:22 schrieb Yann Ylavic

Re: segfault analysis

2015-10-23 Thread Yann Ylavic
On Fri, Oct 23, 2015 at 12:13 PM, Yann Ylavic wrote: > > since the worker destroys itself in its own thread (pool == w->pool). > > Also, where are the worker threads joined? Actually I find both joining the worker thread and then worker_destroy() should be done in

Re: segfault analysis

2015-10-23 Thread Yann Ylavic
On Fri, Oct 23, 2015 at 10:42 AM, Stefan Eissing wrote: > > In regard to https://bz.apache.org/bugzilla/show_bug.cgi?id=58524 We possibly need this too: Index: modules/http2/h2_worker.c === ---

Re: segfault analysis

2015-10-23 Thread Yann Ylavic
On Fri, Oct 23, 2015 at 11:18 AM, Yann Ylavic wrote: > > Index: modules/http2/h2_mplx.c > === > --- modules/http2/h2_mplx.c(revision 1710105) > +++ modules/http2/h2_mplx.c(working copy) > @@ -143,12

Re: segfault analysis

2015-10-23 Thread Yann Ylavic
On Fri, Oct 23, 2015 at 11:59 AM, Stefan Eissing wrote: > > The problem with the unlock in release is that the h2_mplx might have been > destroyed by then, as the signal might give the lock to someone waiting. Hm, h2_mplx_release_and_join() (which destroys the

Re: segfault analysis

2015-10-23 Thread Stefan Eissing
Nice analysis, btw. I think you found the problem. I'll replace the timed wait by a simple wait... > Am 23.10.2015 um 11:22 schrieb Yann Ylavic : > > On Fri, Oct 23, 2015 at 11:18 AM, Yann Ylavic wrote: >> >> Index: modules/http2/h2_mplx.c >>

Re: segfault analysis

2015-10-23 Thread Yann Ylavic
On Fri, Oct 23, 2015 at 12:23 PM, Stefan Eissing wrote: > > Hmm, I think the best way to tackle this is to transfer the worker into a > zombie set from worker_done(). Then in h2_workers_register(), which is called > regularly and often, join the threads and destroy

Re: segfault analysis

2015-10-23 Thread Stefan Eissing
Code review is a fine thing... Hmm, I think the best way to tackle this is to transfer the worker into a zombie set from worker_done(). Then in h2_workers_register(), which is called regularly and often, join the threads and destroy the zombie workers. Allocating the worker from parent_pool is

segfault analysis

2015-10-23 Thread Stefan Eissing
A question to the more experienced httpd debuggers: In regard to https://bz.apache.org/bugzilla/show_bug.cgi?id=58524 Can I recover any files/lines from these === Backtrace: = /lib64/libc.so.6[0x32a507174f] /lib64/libc.so.6(cfree+0x4b)[0x32a5075a4b]