[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [Libevent-users] Crash in my simple multi-threaded evhttp app [code incl.]



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 majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.