[pypy-dev] PyPy 1.6 not working on Windows XP

Ram Rachum ram at rachum.com
Thu Oct 6 00:09:01 CEST 2011


Can you fill in something for "#Do something that uses lots of RAM"? Because
I'm not sure I'll get it right.

On Thu, Oct 6, 2011 at 12:02 AM, Alex Pyattaev <alex.pyattaev at gmail.com>wrote:

> I've had a very similar stuff, as in something crashing only when run many
> times when I had a bug in a container type implemented in C. Basically, I
> had
> wrong refcount for the objets, which caused them to be freed by garbage
> collectore while they have been still used. Maybe something similar happens
> in
> the code that wraps windows API that handles file opening. That would
> explain
> why the bug never happens on linux. A good candidate would be incorrect
> refcount for the return value if the file does not  exist. Try something
> like
> this:
> s="some_file"
> rets=[]
> for i in range(1000):
>        rets.append(os.stat(s))
>        gc.collect()
>        #Do something that uses lots of RAM (but a random amount, preferably
> in
> small blocks)
>        print rets
> if it crashes then you have exactly that issue. 1000 might be not enough to
> toggle the crash though, as you need the OS to actually allocate different
> segments of memory for this to work. The more RAM you have the more cycles
> you
> need to toggle the crash. At least this approach helped me to debug
> extension
> modules written in C.
>
> BTW, for me on VM the test case does not crash. But I have SP2 windows
> there.
> On Wednesday 05 October 2011 19:37:07 Ram Rachum wrote:
> > On Wed, Oct 5, 2011 at 6:51 PM, Amaury Forgeot d'Arc
> <amauryfa at gmail.com>wrote:
> > > 2011/10/5 Ram Rachum <ram at rachum.com>:
> > > > Okay, I've spent a few hours print-debugging, and I think I've
> > > > almost got it.
> > > >
> > > > The crash happens on a line:
> > > >     st = os.stat(s)
> > > >
> > > > inside `os.path.isdir`, where `s` is a string 'C:\\Documents and
> > > > Settings\\User\\My Documents\\Python
> > > > Projects\\GarlicSim\\garlicsim\\src' This is a directory that
> > > > happens not to exist, but of course this is not>
> > > a
> > >
> > > > good reason to crash.
> > > > I have tried running `os.stat(s)` in the PyPy shell with that same
> > > > `s`,
> > >
> > > but
> > >
> > > > didn't get a crash there. I don't know why it's crashing in Nose but
> > > > not>
> > > in
> > >
> > > > the shell.
> > > >
> > > > Does anyone have a clue?
> > >
> > > it's possible that it's a RPython-level exception, or a bad handle
> > > because too many files wait for the garbage collector to close them.
> > >
> > > Can you give more information about the crash itself?
> > > - What are the last lines printed in the console? Try to disable
> > > "stdout capture" in Nose, by passing the -s option.
> >
> > This is the entire output:
> >
> > Preparing to run tests using Python 2.7.1 (080f42d5c4b4, Aug 23 2011,
> > 11:41:11)
> > [PyPy 1.6.0 with MSC v.1500 32 bit]
> > Running tests directly from GarlicSim repo.
> > Pypy doesn't have wxPython, not loading `garlicsim_wx` tests.
> > nose.config: INFO: Set working dir to C:\Documents and Settings\User\My
> > Documents\Python Projects\GarlicSim
> > nose.config: INFO: Ignoring files matching ['^\\.', '^_', '^setup\\.py$']
> > nose.plugins.cover: INFO: Coverage report will include only packages:
> > ['garlicsim', 'garlicsim_lib', 'garlicsim_wx', 'test_garlicsim',
> > 'test_garlicsim_lib', 'test_garlicsim_wx', 'garlicsim', 'garlicsim_lib',
> > 'garlicsim_wx', 'test_garlicsim', 'test_garlicsim_lib',
> 'test_garlicsim_wx',
> > 'garlicsim', 'garlicsim_lib', 'garlicsim_wx', 'test_garlicsim',
> > 'test_garlicsim_lib', 'test_garlicsim_wx']
> >
> >
> >
> >
> > - after the pypy process has exited, type "echo %ERRORLEVEL%" in the
> >
> > > same console, to print the exit code
> > > of the last process. Which number is it?
> >
> > -1073741819
> >
> > > --
> > > Amaury Forgeot d'Arc
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20111006/5c557f0c/attachment.html>


More information about the pypy-dev mailing list