Thanks for your reply, Mark. First of all, I'd like to clarify, if maybe I did not make it clear, but I'm using a custom threading library built on top of Qt. So I'm not quite sure if I use evthread_use_windows_threads() *IN CONJUNCTION WITH* evthread_set_id_callback, evthread_set_condition_callbacks, and evthread_set_lock_callbacks. I figured if I'm going to be using a custom thread library that I'd use neither evthread_use_windows_threads nor evthread_use_posix_threads.
Secondly, I took your suggestion and called evthread_use_windows_threads() as the first thing I do and it still crashed. I am attaching the code below. Perhaps as a sanity check, it would be nice if someone would at least say "yes/no evhttp was/wasn't meant to be used in the way you're using it" Thanks, -Julian evthread_use_windows_threads(); ... evthread_set_id_callback(&EvThread::id_fn); evthread_condition_callbacks cond_cbs; cond_cbs.condition_api_version = 1.0; cond_cbs.alloc_condition = &EvWaitCond::alloc_condition; cond_cbs.free_condition = &EvWaitCond::free_condition; cond_cbs.signal_condition = &EvWaitCond::signal_condition; cond_cbs.wait_condition = &EvWaitCond::wait_condition; evthread_set_condition_callbacks(&cond_cbs); evthread_lock_callbacks lock_cbs; lock_cbs.lock_api_version = 1.0; lock_cbs.supported_locktypes = EVTHREAD_LOCKTYPE_RECURSIVE; lock_cbs.alloc = &EvLock::alloc; lock_cbs.free = &EvLock::free; lock_cbs.lock = &EvLock::lock; lock_cbs.unlock = &EvLock::unlock; evthread_set_lock_callbacks(&lock_cbs); ==================== On Wed, Jun 27, 2012 at 12:42 PM, Mark Ellzey <mtho...@strcpy.net> wrote: > On Wed, Jun 27, 2012 at 02:37:22PM -0500, Mark Ellzey wrote: > > On Wed, Jun 27, 2012 at 11:02:04AM -0700, Julian Bui wrote: > > > Hi libevent, > > > > > > Sorry for the recent surge of emails. I am trying to determine the > cause > > > of a problem in my application while using evhttp. I wrote a toy/dummy > > > server (whose code I included) that exhibits the same problem that my > real > > > application is having. > > > > > > PROBLEM OVERVIEW: > > > > > > My application is using ev_http and I set its gencb (handles any > request > > > that comes in) to a function that just validates that there's a path or > > > query. If a path or query exists, the evhttp_request*, path, and > query are > > > handed off to one thread which processes the request one at a time. > This > > > thread is calling evhttp_send_reply or evhttp_send_error when done > with the > > > request. > > > > > > The problem is that when I hit my server through the browser and hit > > > refresh to constantly send it requests, it crashes. In the debugger, > I see > > > it crashes on the evhttp_send_reply line and the error reads: > "exception at > > > 0x____ in ____.exe, 0xC0000005: Access violation reading location > > > 0xdddddee5" none of the parameters going into this method are NULL. > > > > > > > I don't see either evthread_use_pthreads() or > > evthread_use_windows_threads() being used before setting up any events. > > Try putting that at the top of your main function before anything else > > and compile with -levent_threads > > Let me reiterate, you first have to call one of the above functions > *before* setting evthread_set_lock_callbacks, evthread_set_id_callback, > and evthread_set_condition_callbacks. > *********************************************************************** > To unsubscribe, send an e-mail to majord...@freehaven.net with > unsubscribe libevent-users in the body. >