Skip to content
This repository has been archived by the owner on Jun 30, 2021. It is now read-only.

Q: Is it safe to operate the same request between different threads? #139

Open
git4won opened this issue Jul 8, 2019 · 1 comment
Open

Comments

@git4won
Copy link

git4won commented Jul 8, 2019

Details

Hi, I am trying to use libevhtp run my service with kafka, and this is my processing step:

  1. when got a request, in it's evhtp_callback_cb, I send data to kafka broker and save this request address, then return.
  2. In kafka consumer thread, got result data and response to the request.

It’s run well if the requests not too much, but when run pressure test, this error always happen:

[ERROR] evhtp.c:2370     shutting down connection: no request associated with connection :: (errno: None)

and case abort:

Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffed5ff700 (LWP 14831)]
0x00007ffff5efe207 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install bzip2-libs-1.0.6-13.el7.x86_64 glibc-2.17-260.el7_6.4.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 krb5-libs-1.15.1-37.el7_6.x86_64 libcom_err-1.42.9-13.el7.x86_64 libgcc-4.8.5-36.el7_6.2.x86_64 libselinux-2.5-14.1.el7.x86_64 libstdc++-4.8.5-36.el7_6.2.x86_64 libuuid-2.23.2-59.el7_6.1.x86_64 openssl-libs-1.0.2k-16.el7_6.1.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-18.el7.x86_64
(gdb) bt
#0  0x00007ffff5efe207 in raise () from /lib64/libc.so.6
#1  0x00007ffff5eff8f8 in abort () from /lib64/libc.so.6
#2  0x000000000062491a in event_exit (errcode=errcode@entry=-559030611) at log.c:105
#3  0x0000000000624dbb in event_errx (eval=eval@entry=-559030611, fmt=fmt@entry=0x844860 "%s:%d: Assertion %s failed in %s") at log.c:162
#4  0x000000000060e4e4 in evbuffer_chain_free (chain=<optimized out>) at buffer.c:197
#5  evbuffer_decref_and_unlock_ (buffer=0x7fffe1d47880) at buffer.c:574
#6  0x000000000060e58e in evbuffer_free (buffer=<optimized out>) at buffer.c:590
#7  0x0000000000614596 in bufferevent_finalize_cb_ (evcb=<optimized out>, arg_=0x7fffec80b280) at bufferevent.c:744
#8  0x000000000061c370 in event_process_active_single_queue (base=base@entry=0x7fffec801000, activeq=0x7fffec808000, max_to_process=max_to_process@entry=2147483647, endtime=endtime@entry=0x0)
    at event.c:1675
#9  0x000000000061cdf7 in event_process_active (base=0x7fffec801000) at event.c:1738
#10 event_base_loop (base=0x7fffec801000, flags=0) at event.c:1961
#11 0x000000000050762b in _evthr_loop (args=0x7ffff462e180) at /home/won/Downloads/libevhtp-1.2.16/thread.c:121
#12 0x00007ffff79c1dd5 in start_thread () from /lib64/libpthread.so.0
#13 0x00007ffff5fc5ead in clone () from /lib64/libc.so.6

I want to know is it safe to operate the same request between different threads?
If it is my way of use is wrong, please let me know.

Thanks!

Version

The latest version of develop branch.

@gshakir
Copy link

gshakir commented Nov 26, 2019

I have the same question. I am seeing this error:

[err] event_queue_remove: 0x7f4e180017a8(fd 94) not on queue 8

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants