New submission from Jan Safranek:
I have Python 2.7.4 running on Fedora Rawhide and I get segmentation fault with
following backtrace:
#0 0x7f73f69ca5f1 in clear_weakref (self=0x7f73ff515c00) at
Objects/weakrefobject.c:56
#1 weakref_dealloc (self=0x7f73ff515c00) at Objects
Jan Safranek added the comment:
I can reproduce the crash in very unusual setup:
1. OpenPegasus (http://www.openpegasus.org/), for this bug we may consider it
just a network daemon, listening on TCP port. When a request comes, it is
eventually processed by a provider (= something like plugin
Jan Safranek added the comment:
Bisecting Python mercurial repository, I found the patch which causes the crash:
changeset: 80762:7e771f0363e2
branch: 2.7
parent: 80758:29627bd5b333
user:Antoine Pitrou
date:Sat Dec 08 21:15:26 2012 +0100
summary: Issue #16602
Jan Safranek added the comment:
> First, have you seen the following message on that bug report:
> http://bugs.python.org/issue16602#msg177180
I'm reading it now... I searched for PyWeakref_GET_OBJECT in cmpi-bindings and
both occurrences generated by SWIG and both look safe.
I
Jan Safranek added the comment:
> Could you try to inspect the `self` variable inside weakref_dealloc,
> especially `self->wr_object` and its Py_TYPE() value? Also, what is the
> value of Py_REFCNT(self->wr_object)?
in weakref_dealloc at Objects/weakrefobject.c:106:
(
Jan Safranek added the comment:
> Right. But this is an embedded interpreter, and SWIG does not call
> PyType_Ready() again; the old type is returned instead.
Python crashes in Py_Initialize(). SWIG_init() is called right after it.
So even if SWIG calls PyType_Ready, it would be too late
Jan Safranek added the comment:
On 05/07/2013 06:06 PM, Antoine Pitrou wrote:
> a significant amount of static data inside CPython actually survives
> Py_Finalize :-/
As a solution, would it be possible to wipe all registered types in
Py_Finalize
Jan Safranek added the comment:
On 05/07/2013 05:32 PM, Antoine Pitrou wrote:
> Jan, one possibility would be for Pegasus to stop "unloading" Python,
> it seems.
It is always possibility. Actually, Pegasus "plugin" is just a shared
object (.so) and the .so is linked
Jan Safranek added the comment:
On 05/09/2013 09:07 AM, Jan Safranek wrote:
>
> Jan Safranek added the comment:
>
> On 05/07/2013 05:32 PM, Antoine Pitrou wrote:
>> Jan, one possibility would be for Pegasus to stop "unloading" Python,
>> it seems.
>