Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!aioe.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.004 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'debug': 0.03; 'infinite': 0.07; 'python': 0.08; 'dict': 0.09; 'loop.': 0.09; '*result': 0.16; '[gcc': 0.16; 'core.': 0.16; 'linux2': 0.16; 'pyobject': 0.16; 'received:192.168.11': 0.16; 'subject:() ': 0.16; 'extension': 0.17; '>>>': 0.18; 'jan': 0.19; '(which': 0.19; 'checked': 0.21; 'wrote': 0.21; 'received:209.85.210.174': 0.21; 'received:mail-iy0-f174.google.com': 0.21; 'stack': 0.24; 'static': 0.24; 'subject: ?': 0.24; 'suspect': 0.24; 'code.': 0.26; 'skip:_ 20': 0.26; "i'm": 0.28; 'pass': 0.29; 'class': 0.29; 'skip:b 20': 0.29; 'null;': 0.30; 'skip:b 30': 0.31; 'message- id:@gmail.com': 0.31; 'header:User-Agent:1': 0.33; 'hi,': 0.34; 'to:addr:python-list': 0.35; 'everyone.': 0.37; 'but': 0.37; 'received:google.com': 0.37; 'received:209.85': 0.38; 'received:192': 0.38; 'skip:o 20': 0.38; 'received:209': 0.39; 'cannot': 0.39; 'point': 0.40; 'to:addr:python.org': 0.40; 'below': 0.62; 'show': 0.66; 'charset:iso-2022-jp': 0.74; '2012,': 0.84; 'content-type:application/zip': 0.84; 'filename:fname piece:zip': 0.96 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject :content-type; bh=qmVbzLeojyIrbw61b3VKFxbvnSLKlpavOXAimGucoDg=; b=rwjGldUizZ2TKOW0kg8Ci5PugiGG17znW27HT2m5bZ00iisLQJZueTxIC8AqPrpyg7 5uLc8okT8JNWcttvGLhgqu6ceCZvn2lDqQOGKbgupVa3qOIqcybBwtcVEGX143Izs7mQ 5G7NzwbAM6LRF7oZhMJ4h9pNOriJ6pLuVWZTM= Date: Sat, 11 Feb 2012 07:06:22 +0900 From: umedoblock User-Agent: Mozilla/5.0 (X11; Linux i686; rv:9.0) Gecko/20111229 Thunderbird/9.0 MIME-Version: 1.0 To: python-list@python.org Subject: why does subtype_dict() and getset_get() makes infinite loop ? Content-Type: multipart/mixed; boundary="------------050800090401050400080004" X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 142 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1328911614 news.xs4all.nl 6937 [2001:888:2000:d::a6]:58084 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:20195 This is a multi-part message in MIME format. --------------050800090401050400080004 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Hi, everyone. I'm umedoblock. now, I wrote a below sentence. But I cannot debug below infinite loop. Do I mistake when I write a c exetension ? I attached sample code. Please help me. ========================================== Python 3.2.2 (default, Jan 27 2012, 03:19:53) [GCC 4.6.1] on linux2 class Bar_abstract(metaclass=ABCMeta): pass # c extension # class Bar_base(Bar_abstract): # pass class Bar(Bar_base): pass ========================================== but do this bar = Bar() dir(bar) then python3.2.2 generates a core. Because subtype_dict() and getset_get() makes infinite loop. I checked stack with GDB. ================================================================== #130948 0x0817670a in getset_get (descr=0xb73ae034, obj=0xb73e7e44, type=0x88ba4cc) at ../Objects/descrobject.c:148 #130949 0x080719f5 in subtype_dict (obj=0xb73e7e44, context=0x0) at ../Objects/typeobject.c:1756 #130950 0x0817670a in getset_get (descr=0xb73ae034, obj=0xb73e7e44, type=0x88ba4cc) at ../Objects/descrobject.c:148 #130951 0x080719f5 in subtype_dict (obj=0xb73e7e44, context=0x0) at ../Objects/typeobject.c:1756 #130952 0x0817670a in getset_get (descr=0xb73ae034, obj=0xb73e7e44, type=0x88ba4cc) at ../Objects/descrobject.c:148 #130953 0x080719f5 in subtype_dict (obj=0xb73e7e44, context=0x0) at ../Objects/typeobject.c:1756 ================================================================== GDB show me above code. Now, I suspect below point PyObject_GetAttrString(). But I cannot debug this infinite loop. Do I mistake when I write a c exetension ? I attached sample code. Please help me. ojects/object.c:1325 static PyObject * _generic_dir(PyObject *obj) { PyObject *result = NULL; PyObject *dict = NULL; PyObject *itsclass = NULL; /* Get __dict__ (which may or may not be a real dict...) */ >>> dict = PyObject_GetAttrString(obj, "__dict__"); --------------050800090401050400080004 Content-Type: application/zip; name="bar_ext.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="bar_ext.zip" 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 AABQSwUGAAAAAAcABwBbAgAA4wkAAAAA --------------050800090401050400080004--