Re: [Zope-dev] Confusing segfault for Zope2 head on RH7.3
Barry A. Warsaw wrote:
Working on the Zope 2.7 branch I noticed a very strange crash while running the test suite. I re-checked out the Zope 2 cvs head, rebuilt everything from scratch and I still get the crash. I'm about out of ideas so I thought I'd post what I know here in case anyone else can confirm or give clues.
[...]
The top of the backtrace is:
#0 PyErr_SetString (exception=0x6e727574, string=0x402660dc "Splitter index out of range") at Python/errors.c:69
On *my* RedHat 7.3 system, I cannot reproduce your problem. However, you do note that exception 0x6e727574 is ASCII for 'nrut' or 'turn' backwards. I dont know if that's meaningful or not. I usally watch out for ASCII in things that should otherwise be addresses. -- Matt Kromer Zope Corporation http://www.zope.com/
"MTK" == Matthew T Kromer <matt@zope.com> writes:
MTK> On *my* RedHat 7.3 system, I cannot reproduce your problem. MTK> However, you do note that exception 0x6e727574 is ASCII for MTK> 'nrut' or 'turn' backwards. I dont know if that's meaningful MTK> or not. I usally watch out for ASCII in things that should MTK> otherwise be addresses. Ah, backwards masking C heaps! If you look at the whole thing, it says: 'natas fo rial eht retne ton ot dna dnuora nrut' Actually the tale gets weirder. With a Python 2.2.1 --with-pydebug build there is no crash at all. With a Python 2.1.3 built w/ gcc 3.1 and -g and -O2 I get no crash but this exception: Traceback (most recent call last): File "crash.py", line 8, in ? list(x) SystemError: error return without exception set With a Python 2.1.3 built w/gcc 3.1 and just -g (no -O2) I get some weird worst-of-both-worlds: Traceback (most recent call last): File "crash.py", line 8, in ? list(x) Segmentation fault (core dumped) So I'm totally confuzzled and am sick of wasting time on this, so I think I'll just trust Python 2.2.1. ;) -Barry
Matthew T. Kromer wrote:
On *my* RedHat 7.3 system, I cannot reproduce your problem.
However, you do note that exception 0x6e727574 is ASCII for 'nrut' or 'turn' backwards. I dont know if that's meaningful or not. I usally watch out for ASCII in things that should otherwise be addresses.
FYI -- I fixed this in the ISO_8859_1 splitter. The problem was a section of code attempting to use the character "mu" (a character with the high bit set) as an offset into an array. It was cast to an int, rather than an unsigned char, so it went negative, and the code stored 0x01 into an area it shouldn't have -- in this case, on top of the linkage table entry for PyExc_IndexError. -- Matt Kromer Zope Corporation http://www.zope.com/
participants (2)
-
barry@zope.com -
Matthew T. Kromer