Access violation when no memory
Pat Szuta
perly at news.xnet.com
Tue Jun 20 17:49:09 EDT 2000
More information about the Python-list mailing list
Tue Jun 20 17:49:09 EDT 2000
- Previous message (by thread): Conversion from proprietary satellite control script language
- Next message (by thread): Access violation when no memory
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
I think that this might be a problem with the python GC. Basically you create circular lists, and because their reference count never goes down to zero, the GC never frees them. For example: ython 1.5.2 (#1, Feb 1 2000, 16:32:16) [GCC egcs-2.91.66 19990314/Linux (egcs- on linux-i386 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> while 1 == 1: ... x = [1] ... y = [2] ... x[0] = y ... y[0] = x ... This will eat up your memory like there is no tomorrow. I think that the problem that you're describing my be similar. On Mon, 19 Jun 2000 22:20:46 -0700, Phil Mayes <nospam at bitbucket.com> wrote: >The following program progressively allocates all memory: > size = 1 << 20 > list = [None,] > while size: > try: > mem = [None] * size > mem[0] = list > list = mem > except: > size = size / 2 > >It fails with an access violation. (Turn off virtual memory >to provoke it.) This is not a theoretical situation for me: >I have a beta release in the field that is crashing like this. >The immediate cause is this: > >1. we are handling a MemoryError >2. the following call cannot allocate a traceback object > ceval.c line 1800: PyErr_Fetch(&exc, &val, &tb); >3. the NULL pointer at tb is pushed here: > ceval.c line 1816: PUSH(tb); > ceval.c line 1817: PUSH(val); > ceval.c line 1818: PUSH(exc); >4. later it is popped here and its ref count is decremented: > ceval.c line 682: case POP_TOP: > ceval.c line 683: v = POP(); > ceval.c line 684: Py_DECREF(v); > ceval.c line 685: continue; > >This is with 1.5.2 but the crash still happens with 1.6a2. >At this stage I am way out of my depth, and the only way I >see to fix this is to change Py_DECREF to Py_XDECREF, which >is a (minor?) inefficiency. Can anyone recommend a better way? > >And should I report this at http://www.python.org/python-bugs? >I do not have access to the current CVS tree. > >TIA, Phil Mayes >-- >pmayes AT olivebr DOT com > > > -- ------------------------------------------------------------------------------- Pat Szuta www.sourcelight.com Software Engineer "Guiding you to Sourcelight Technologies great choices"(TM) (847)-475-1000 ext. 209
- Previous message (by thread): Conversion from proprietary satellite control script language
- Next message (by thread): Access violation when no memory
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list