[Openmcl-devel] Another linux86-32: signed doubleword parameters.
David Brown
lisp at davidb.org
Mon Oct 13 09:11:51 PDT 2008
On Mon, Oct 13, 2008 at 06:20:04AM -0600, Gary Byers wrote:
> When sockets are involved, are threads also involved ? (Threads
> generally offer more ways for things to go wrong; sockets are mostly
> just streams and are probably no more likely to scribble over memory
> than other streams are.)
Yes, I was about to post another message mentioning that this was also
when threads got involved in the picture. You're right, the sockets
probably don't have much to do with it.
> Whether or not the integrity checks are performed is controlled
> by a bit in the fixnum which is the global value of the variable
> CCL::*GC-EVENT-STATUS-BITS*; doing:
> It's sometimes very hard to debug this kind of problem, and even harder to
> explain to someone else how to do so. It -might- be interesting to see
> what gets reported if you run your code with integrity checking on, but
> in practice it's probably necessary for us to either run that code or
> run something similar that triggers the same. If you can send us your
> code, we can try to figure out what's going on.
I've debugged plenty of GC/memory errors, so I have some idea of what
is going on.
Let me poke around a bit and see if anything is obvious.
So, first crash is "Exception occurred while executing foreign code."
Exception occurred while executing foreign code
at mark_root + 45
My code does make fairly heavy usage of 'with-pointer-to-ivector'.
Perhaps %log-gc-lock (without-gcing) isn't working, and another thread
is starting a garbage collection while the other CPU is running the
foreign code.
Basically, a good portion of the CPU time of the application is spent
inside of zlib with pointers to lisp heap data. At some point, I
might change this to use foreign pointers, but then I have to worry
about space leaks and such.
I do also have multiple CPUs.
Thanks,
David
More information about the Openmcl-devel
mailing list