classification
Title: Python-2.5.2: crash in visit_decref () at Modules/gcmodule.c:270
Type: Stage:
Components: Interpreter Core Versions: Python 2.5
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: amaury.forgeotdarc, garikvm, nnorwitz
Priority: normal Keywords:

Created on 2008-04-04 05:28 by garikvm, last changed 2008-04-05 17:02 by garikvm. This issue is now closed.

Files
File name Uploaded Description Edit
unnamed garikvm, 2008-04-05 07:04
bug.tar.gz garikvm, 2008-04-05 07:04
unnamed garikvm, 2008-04-05 17:02
Messages (6)
msg64915 - (view) Author: George Verbitsky (garikvm) Date: 2008-04-04 05:28
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1208408368 (LWP 2816)]
0x080edccd in visit_decref (op=0xbf9289ff, data=0x0) at
Modules/gcmodule.c:270
270             if (PyObject_IS_GC(op)) {
(gdb) bt
#0  0x080edccd in visit_decref (op=0xbf9289ff, data=0x0) at
Modules/gcmodule.c:270
#1  0x08099e19 in tupletraverse (o=0xb7f2380c, visit=0x80edcc0
<visit_decref>, arg=0x0)
    at Objects/tupleobject.c:443
#2  0x080ee63e in collect (generation=0) at Modules/gcmodule.c:295
#3  0x080ef159 in _PyObject_GC_NewVar (tp=0x8170700, nitems=14) at
Modules/gcmodule.c:897
#4  0x08111f10 in PyFrame_New (tstate=0x8bdd128, code=0xb7d04410,
globals=0xb7cd3934, locals=0x0)
    at Objects/frameobject.c:614
#5  0x080c521a in PyEval_EvalFrameEx (f=0x8cf0fb4, throwflag=0) at
Python/ceval.c:3639
#6  0x080c5265 in PyEval_EvalFrameEx (f=0x8ced7bc, throwflag=0) at
Python/ceval.c:3650
#7  0x080c5265 in PyEval_EvalFrameEx (f=0x8ced484, throwflag=0) at
Python/ceval.c:3650
#8  0x080c5265 in PyEval_EvalFrameEx (f=0x8ce7dbc, throwflag=0) at
Python/ceval.c:3650
#9  0x080c5265 in PyEval_EvalFrameEx (f=0x8ce7c5c, throwflag=0) at
Python/ceval.c:3650
#10 0x080c6075 in PyEval_EvalCodeEx (co=0xb7c2d608, globals=0xb7c18e84,
locals=0x0, args=0xb7f28378, 
    argcount=1, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0)
at Python/ceval.c:2831
#11 0x08112871 in function_call (func=0xb7c2af44, arg=0xb7f2836c,
kw=0x0) at Objects/funcobject.c:517
#12 0x08061a17 in PyObject_Call (func=0x7, arg=0xb7f2836c, kw=0x0) at
Objects/abstract.c:1860
#13 0x08067937 in instancemethod_call (func=0xb7f1302c, arg=0xb7f2836c,
kw=0x0) at Objects/classobject.c:2497
#14 0x08061a17 in PyObject_Call (func=0x7, arg=0xb7f5202c, kw=0x0) at
Objects/abstract.c:1860
#15 0x0809d7cb in slot_tp_init (self=0xb7c3442c, args=0xb7f5202c,
kwds=0x0) at Objects/typeobject.c:4862
#16 0x080a0393 in type_call (type=0x8c5d04c, args=0xb7f5202c, kwds=0x0)
at Objects/typeobject.c:436
#17 0x08061a17 in PyObject_Call (func=0x7, arg=0xb7f5202c, kw=0x0) at
Objects/abstract.c:1860
#18 0x080c1149 in PyEval_EvalFrameEx (f=0x8ce7afc, throwflag=0) at
Python/ceval.c:3775
#19 0x080c6075 in PyEval_EvalCodeEx (co=0xb7c2d4a0, globals=0xb7c83934,
locals=0x0, args=0xb7f23818, 
    argcount=1, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0)
at Python/ceval.c:2831
#20 0x08112871 in function_call (func=0xb7c2ae64, arg=0xb7f2380c,
kw=0x0) at Objects/funcobject.c:517
#21 0x08061a17 in PyObject_Call (func=0x7, arg=0xb7f2380c, kw=0x0) at
Objects/abstract.c:1860
#22 0x080be26c in PyEval_CallObjectWithKeywords (func=0xb7c2ae64,
arg=0xb7f2380c, kw=0x0)
    at Python/ceval.c:3433
#23 0x08061c30 in PyObject_CallObject (o=0xb7c2ae64, a=0xb7f2380c) at
Objects/abstract.c:1851
#24 0x08061879 in C2py (func=0x81380c5 "backend", nargs=1) at C2py.c:52
#25 0x0806191d in backend (output_filename=0xbf9289ff "cla") at backend.c:5
#26 0x08056fa5 in main (argc=3, argv=0xbf9271b4) at main.c:33
(gdb)
msg64919 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-04-04 07:20
Without a single hint about the code your are running, no investigation
is possible. And since the traceback shows that the python interpreter
is embedded in another application, it could very well be an error in
your C code.

Please provide a way to reproduce the problem.
msg64960 - (view) Author: Neal Norwitz (nnorwitz) * (Python committer) Date: 2008-04-05 03:02
I'm setting the priority to release blocker for now.  George, please
provide a way for us to reproduce with a stock python (ie, no third
party extensions).  Thanks.
msg64966 - (view) Author: George Verbitsky (garikvm) Date: 2008-04-05 07:04
Neal,

to reproduce the bug you have to have bison and flex on your system.
(Perl is used to generate some source files
but in won't be invoked by make in our case.)
To reproduce the bug you have
1. to change 'srcdir' in Makefile.
2. run 'make check'
3. run 'gdb tryit'
4. on gdb's prompt type 'r test0.c bla' and press Enter

I am using CentOS Linux. I don't think Linux's flavor matters though.

Please let me know if you need an additional info from me.

Thank you,
George

Neal Norwitz <report@bugs.python.org> wrote: 
Neal Norwitz  added the comment:

I'm setting the priority to release blocker for now.  George, please
provide a way for us to reproduce with a stock python (ie, no third
party extensions).  Thanks.

----------
nosy: +nnorwitz
priority:  -> release blocker

__________________________________
Tracker 

__________________________________

---------------------------------
You rock. That's why Blockbuster's offering you one month of Blockbuster Total Access, No Cost.
msg64970 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2008-04-05 12:07
The crash is because of an error in your C code:
in backend.c::
    void backend(char *output_filename)
    {
        C2py("backend", 1, output_filename);
    }

But your C2py function expects a variable number of PyObject*.

I found this by disabling the garbage collector: then the program
crashes in C2py.c at the instruction "Py_DECREF(pArgs);"
msg64989 - (view) Author: George Verbitsky (garikvm) Date: 2008-04-05 17:02
Thank you, Amaury, very much for helping me with this one.
George

Amaury Forgeot d'Arc <report@bugs.python.org> wrote: 
Amaury Forgeot d'Arc  added the comment:

The crash is because of an error in your C code:
in backend.c::
    void backend(char *output_filename)
    {
        C2py("backend", 1, output_filename);
    }

But your C2py function expects a variable number of PyObject*.

I found this by disabling the garbage collector: then the program
crashes in C2py.c at the instruction "Py_DECREF(pArgs);"

----------
priority: release blocker -> normal
resolution:  -> invalid
status: open -> closed

__________________________________
Tracker 

__________________________________

---------------------------------
You rock. That's why Blockbuster's offering you one month of Blockbuster Total Access, No Cost.
History
Date User Action Args
2008-04-05 17:02:28garikvmsetfiles: + unnamed
messages: + msg64989
2008-04-05 12:07:44amaury.forgeotdarcsetstatus: open -> closed
resolution: not a bug
messages: + msg64970
priority: release blocker -> normal
2008-04-05 07:04:52garikvmsetfiles: + unnamed, bug.tar.gz
messages: + msg64966
2008-04-05 03:02:50nnorwitzsetpriority: release blocker
nosy: + nnorwitz
messages: + msg64960
2008-04-04 07:20:30amaury.forgeotdarcsetnosy: + amaury.forgeotdarc
messages: + msg64919
2008-04-04 05:28:57garikvmcreate