qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rafael Schloming <...@alum.mit.edu>
Subject Re: proton 0.10 blocker
Date Fri, 17 Jul 2015 18:17:45 GMT
Thanks,

Given this I believe the incref/decref pair is indeed running into problems
when being invoked from inside a finalizer. I'd be curious if an
alternative fix would work. I suspect you could replace the additional
conditions you added to the if predicate with this:

  pn_refcount(endpoint) > 0

If that fix does work then it would confirm my theory and likely be a more
robust fix.

FWIW, pn_refcount(...) yielding zero implies that the object is currently
being finalized and so should avoid getting into trouble without any need
to write code that depends on an understanding of object specific state.

--Rafael

On Fri, Jul 17, 2015 at 10:12 AM, Gordon Sim <gsim@redhat.com> wrote:

> On 07/17/2015 05:36 PM, Rafael Schloming wrote:
>
>> Hi Gordon,
>>
>> I did my best to dump some useful info on the refcounting stuff in the
>> other thread. I also posted a comment on the review. As I said there it
>> would be helpful to see the stack trace from the crash in order to figure
>> out if the fix is merely a workaround.
>>
>
> Here is one:
>
>  #0  0x0000003d54635935 in raise () from /lib64/libc.so.6
>> #1  0x0000003d546370e8 in abort () from /lib64/libc.so.6
>> #2  0x0000003d5462e6a2 in __assert_fail_base () from /lib64/libc.so.6
>> #3  0x0000003d5462e752 in __assert_fail () from /lib64/libc.so.6
>> #4  0x00007fef7d37a761 in pn_class_free (clazz=0x7fef7d5b4ec0,
>> object=0x3692060) at
>> /home/gordon/projects/proton-git/proton-c/src/object/object.c:120
>> #5  0x00007fef7d37aa12 in pn_free (object=<optimized out>) at
>> /home/gordon/projects/proton-git/proton-c/src/object/object.c:265
>> #6  0x00007fef7d386000 in pni_free_children (children=0x3690510,
>> freed=0x36905e0) at
>> /home/gordon/projects/proton-git/proton-c/src/engine/engine.c:454
>> #7  0x00007fef7d386d09 in pn_session_finalize (object=0x3690180) at
>> /home/gordon/projects/proton-git/proton-c/src/engine/engine.c:932
>> #8  0x00007fef7d37a64d in pn_class_decref (clazz=clazz@entry=0x7fef7d5b4e40,
>> object=object@entry=0x3690180) at
>> /home/gordon/projects/proton-git/proton-c/src/object/object.c:97
>> #9  0x00007fef7d37a70b in pn_class_free (clazz=0x7fef7d5b4e40,
>> object=0x3690180) at
>> /home/gordon/projects/proton-git/proton-c/src/object/object.c:122
>> #10 0x00007fef7d37aa12 in pn_free (object=<optimized out>) at
>> /home/gordon/projects/proton-git/proton-c/src/object/object.c:265
>> #11 0x00007fef7d386000 in pni_free_children (children=0x368e9c0,
>> freed=0x368ea90) at
>> /home/gordon/projects/proton-git/proton-c/src/engine/engine.c:454
>> #12 0x00007fef7d3866db in pn_connection_finalize (object=0x368e310) at
>> /home/gordon/projects/proton-git/proton-c/src/engine/engine.c:476
>> #13 0x00007fef7d37a64d in pn_class_decref (clazz=0x7fef7d5b4dc0,
>> object=object@entry=0x368e310) at
>> /home/gordon/projects/proton-git/proton-c/src/object/object.c:97
>> #14 0x00007fef7d37a9d2 in pn_decref (object=object@entry=0x368e310) at
>> /home/gordon/projects/proton-git/proton-c/src/object/object.c:255
>> #15 0x00007fef7d38bd08 in pn_transport_unbind (transport=transport@entry=0x36831e0)
>> at /home/gordon/projects/proton-git/proton-c/src/transport/transport.c:733
>> #16 0x00007fef7d38bd88 in pn_transport_finalize (object=0x36831e0) at
>> /home/gordon/projects/proton-git/proton-c/src/transport/transport.c:602
>> #17 0x00007fef7d37a64d in pn_class_decref (clazz=0x7fef7d5b50c0,
>> object=0x36831e0) at
>> /home/gordon/projects/proton-git/proton-c/src/object/object.c:97
>>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
> For additional commands, e-mail: dev-help@qpid.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message