On Thu, Oct 20, 2011 at 06:52, Nick Mathewson <ni...@freehaven.net> wrote:
> On Wed, Oct 19, 2011 at 9:58 AM, Leonid Evdokimov <l...@darkk.net.ru> wrote:
> (The style tweak is that I generally do
>  "struct foo *bar;" rather than "struct foo* bar;"

Yep, I know that "*" applies to specific variable and not to the type,
that's just my habit, I'll try to keep that in mind for further
patches.


>> 0003 fires with current codebase but, seems, it should not.
> event_reinit is tricky and fragile code; I am sad but not shocked to
> see a bug there.  I tried poking at it a little bit with gdb to see
> where the failure was happening, but the bug seemed to evaporate when
> I added breakpoints: ouch.  I'll try to look more.

I used following script to get backtraces:

export LD_LIBRARY_PATH=$PWD/.libs
# main/fork_dbg
for i in dns/leak_cancel dns/leak_shutdown main/fork_dbg_st main/fork_dbg_mt; do
        i_name="`echo $i | tr / _`"
        { gdb --quiet --batch \
                --ex 'set follow-fork-mode child' \
                --ex 'r' --ex 'bt' \
                --args ./test/.libs/regress $i
        sleep 1
        } &> bug/$i_name &
done
wait

And it constantly fails :)


> Have you tried running the test under valgrind?  If there's really a
> double-unassign happening, it might notice something wrong.

Nope, I have not tried valgrind at first, but I run it right now and
it founds nothing besides some known leaks - my tests do not free all
the resources.

So it looks like bug in pinning/unpinning events to the self-debugging hashmap.

Be the way - maybe, all tests should be running in
event_enable_debug_mode() ? Or, maybe, twice - with the mode enabled
and disabled.
And, maybe, with counting malloc - it can be easily made thread-safe
using atomic variables[1].
What do you think regarding that?

[1] http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Atomic-Builtins.html

--
WBRBW, Leonid Evdokimov
xmpp:l...@darkk.net.ru && http://darkk.net.ru
tel:+79816800702 && tel:+79050965222
***********************************************************************
To unsubscribe, send an e-mail to majord...@freehaven.net with
unsubscribe libevent-users    in the body.

Reply via email to