On Tue, Mar 27, 2012 at 5:35 PM, William Lima <wl...@primate.com.br> wrote:

> On Fri, Mar 23, 2012 at 12:54 AM, Nick Mathewson <ni...@freehaven.net>wrote:
>
>> On Thu, Mar 22, 2012 at 9:18 PM, Mark Ellzey <mtho...@strcpy.net> wrote:
>> > On Thu, Mar 22, 2012 at 07:11:01PM -0300, William Lima wrote:
>> >> Hi!
>> >>
>> >> I'm using bufferevent in my proxy project and I have a bug. The entire
>> >> program is single-thread, but apparently the error callback can be
>> called
>> >> while something is still running (ie. a parser) into server/client read
>> >> callbacks, causing a segmentation fault, since the error callback
>> destroy
>> >> the Connection class.
>> >> Is it the expected behavior? Should I add a *state* to check when a
>> >> callback is running and not delete on error callback directly?
>> >>
>> >> The related code is listed below (server_error_cb, server_read_cb
>> functions
>> >> are similar, but not listed):
>> >>
>> >
>> > Just glancing over your code, the while loop seems like it may be the
>> > cause. When you call bufferevent_write_buffer(), if it is not setup to
>> > be deferred, will immediately attempt to write to the underlying socket.
>> > If the write call fails for some reason, your error callback is
>> > executed.
>>
>> Hmmm.  That's only true with some bufferevent types.  With regular
>> socket-based bufferevents on a non-IOCP backend, it shouldn't be the
>> case, except with certain event types.
>>
>> William, do you have a stack trace for when this undesired callback is
>> happening? There might be a simpler workaround here depending on what
>> the issue is.
>
>
> Hey Nick,
>
> I have Valgrind logs. Logs and source-code attached.
>
> Thanks in advance,
>

anyone had any luck on this?


-- 
w

Reply via email to