davidmoreno / onion

C library to create simple HTTP servers and Web Applications.
http://www.coralbits.com/libonion/
Other
2.02k stars 252 forks source link

oterm deadlock bug #238

Closed demonelf closed 5 years ago

demonelf commented 6 years ago

if Frequent refresh http://127.0.0.1:8080/uuid/e53a1399-81fe-445b-8c6a-c4a809e3b203/ will deadlock all thread at 0x00007fde728997fd in pthread_cond_wait@@GLIBC_2.3.2 ()

demonelf commented 6 years ago

sorry it maybe block at pthread_cond_wait Can it be modified to pthread_cond_timedwait

and if session biger 5 it will block

it block at void onion_poller_poll(onion_poller * p): n = el->f(el->data);

why? thank you

davidmoreno commented 6 years ago

Do you have a working patch?

Do you mind doing a pull request?

Thanks, David.

On Fri, 19 Oct 2018 at 04:00, 疯狂十六进制 notifications@github.com wrote:

sorry it maybe block at pthread_cond_wait Can it be modified to pthread_cond_timedwait

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/davidmoreno/onion/issues/238#issuecomment-431220718, or mute the thread https://github.com/notifications/unsubscribe-auth/AATsuskyPdyorGFrZCqdNq9wL3mDZSD3ks5umTI8gaJpZM4Xi9K7 .

-- David Moreno Montero

dmoreno@coralbits.com +34 658 18 77 17 [image: Coralbits.com] http://www.coralbits.com/ http://www.coralbits.com

demonelf commented 6 years ago

Do you have a working patch? Do you mind doing a pull request? Thanks, David. On Fri, 19 Oct 2018 at 04:00, 疯狂十六进制 @.***> wrote: sorry it maybe block at pthread_cond_wait Can it be modified to pthread_cond_timedwait — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub <#238 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AATsuskyPdyorGFrZCqdNq9wL3mDZSD3ks5umTI8gaJpZM4Xi9K7 . -- David Moreno Montero dmoreno@coralbits.com +34 658 18 77 17 [image: Coralbits.com] http://www.coralbits.com/ http://www.coralbits.com

while (p == o->buffer_pos) // We need it to be diferent, if not does not make sense to wake up pthread_cond_wait(&o->dataReady, &o->mutex);

this code will have this bug Chrome concurrent restriction will causes this problem which can not open big than 5 in one chrome. and cat not Frequent refresh.

i test pthread_cond_timedwait will A little better.

thank you very mach