[Python-bugs-list] [ python-Bugs-762455 ] Python segfaults when sys.stdout is changed in getattr

SourceForge.net noreply@sourceforge.net
Sat, 28 Jun 2003 11:24:50 -0700


Bugs item #762455, was opened at 2003-06-29 03:24
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=762455&group_id=5470

Category: Python Interpreter Core
Group: Python 2.2
Status: Open
Resolution: None
Priority: 5
Submitted By: Hye-Shik Chang (perky)
Assigned to: Nobody/Anonymous (nobody)
Summary: Python segfaults when sys.stdout is changed in getattr

Initial Comment:
Reproducible source digest:

import sys 
class StdoutGuard: 
    def __getattr__(self, attr): 
        sys.stdout = sys.__stdout__ 
        raise RuntimeError("Premature access to 
sys.stdout.%s" % attr) 
sys.stdout = StdoutGuard() 
print "Oops!"


and Backtrace:

(gdb) bt
#0  0x00000002 in ?? ()
#1  0x08055ba6 in PyObject_GetAttrString 
(v=0x814b9e0,
    name=0x2 <Error reading address 0x2: Bad address>) 
at Objects/object.c:1066
#2  0x080a57d2 in PyFile_WriteObject (v=0x817d180, 
f=0x8178a8c, flags=135760524)
    at Objects/fileobject.c:1691
#3  0x08071493 in eval_frame (f=0x8121c0c) at 
Python/ceval.c:1371
#4  0x080730be in PyEval_EvalCodeEx (co=0x8126500, 
globals=0x2, locals=0x2, args=0x0, argcount=0,
    kws=0x0, kwcount=0, defs=0x0, defcount=0, 
closure=0x0) at Python/ceval.c:2595
#5  0x080702da in PyEval_EvalCode (co=0x8126500, 
globals=0x812fd0c, locals=0x812fd0c)
    at Python/ceval.c:481
#6  0x08089891 in run_node (n=0x8178a80, 
filename=0xbfbff648 "test.py", globals=0x812fd0c,
    locals=0x812fd0c, flags=0xbfbff4d8) at 
Python/pythonrun.c:1067
#7  0x08088af7 in PyRun_SimpleFileExFlags 
(fp=0x282c3780, filename=0xbfbff648 "test.py", 
closeit=1,
    flags=0xbfbff4d8) at Python/pythonrun.c:673
#8  0x08052a77 in Py_Main (argc=1, argv=0xbfbff538) 
at Modules/main.c:367
#9  0x080525cf in main (argc=2, argv=0xbfbff538) at 
Modules/python.c:10
#10 0x08052505 in _start ()
(gdb) f 2
#2  0x080a57d2 in PyFile_WriteObject (v=0x817d180, 
f=0x8178a8c, flags=135760524)
    at Objects/fileobject.c:1691
1691            writer = PyObject_GetAttrString(f, "write");
(gdb) p *f
$22 = {ob_refcnt = 1000843696, ob_type = 0x814b9e0}


----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=762455&group_id=5470