I said: > This means that you're not hitting the rlimit at all but getting a > real segfault! Time to do setrlimit -c unlimited and break out GDB, > I'd say. Thomas Wouters came back with: > I did figure out the problem isn't stackspace (which was already > obvious) but *damned* if I know what the problem is. I don't fancy > doing it again just yet :P:P What I did see, however, was that the > reason for the crash isn't the pure recursion. It looks like the > recursiveness *does* get caught properly, and the interpreter raises > an error. And then prints that error over and over again, probably > once for every call to getattr(), and eventually *that* crashes (but > why, I don't know. In one test I did, it crashed in int_print, the > print function for int objects, which did 'fprintf(fp, "%ld", > v->ival);'. The actual SEGV arrived inside fprintf's > internals. v->ival was a valid integer (though a high one) and the > problem was not derefrencing 'v'. 'fp' was stderr, according to its > _fileno member. I've got some more info: this crash only happens if you have built with --enable-threads. This brings in a different (thread-safe) version of fprintf, which uses mutex locks on file objects so output from different threads doesn't get scrambled together. And the SEGV that I saw was happening exactly where fprintf is trying to unlock the mutex on stderr, so it can print "Maximum recursion depth exceeded". This looks like more ammo for Guido's theory that there's something wrong with libpthread on linux, and right now I'm elbows-deep in the guts of libpthread trying to find out more. Fun little project for a Saturday night ;-) > 'ltrace' (if you have it) is also a nice tool to let loose on this > kind of script, by the way, though it does make the test take a lot > longer, and you really need enough diskspace to store the output ;-P Sure, I've got ltrace, and also more diskspace than you really want to know about! Working-at-a-place-with-lots-of-machines-can-be-fun-ly yr's, -Charles
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4