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.pyatt...@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 > <amaur...@gmail.com>wrote: > > > 2011/10/5 Ram Rachum <r...@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 >
_______________________________________________ pypy-dev mailing list pypy-dev@python.org http://mail.python.org/mailman/listinfo/pypy-dev