FFI, ODBC and mysterious crashes

David T. Lewis lewis at mail.msen.com
Mon Nov 7 14:55:12 UTC 2005

On Mon, Nov 07, 2005 at 02:04:45PM +0000, Simon Kirk wrote:
> Simon Kirk wrote:
> > Bert Freudenberg wrote:
> >>
> >> Am 07.11.2005 um 14:37 schrieb Simon Kirk:
> >>
> >>>  I'm still hopeful that I've missed something simple though, to  
> >>> prevent a complicated solution ;)
> >>
> >> Does running the VM with -notimer make any difference?
> >>
> >> - Bert -
> >>
> > I haven't tried that yet - I must confess I'm very new to Squeak (3 
> > months of use so far and loving it :) so I don't really understand the 
> > ins and outs of the VM properly. I'll try the notimer switch now.
> >
> That was it! It no longer crashes when using -notimer. So I'm guessing 
> that there IS a timer being set up in the Intersystems ODBC driver. 
> Unfortunately it appears that the timer for Squeak is rather important: 
> It's really running slowly now. I guess I need to read around the option 
> and find out precisely what it means. Have you got any suggestions for 
> other ways to get around this (other than getting Intersystems to 
> re-write their driver)?

I don't know anything about Intersystems (or ODBC for that matter),
but take a look at their manual and see if there is any way that you
can control what timer and/or interrupt they are using. Presumably
they are trying to set a timeout for database operations that do not
successfully complete. If there is some way to disable that timeout
check (and handle the issue from Squeak), that may be your best bet.

If you cannot disable the timer in the ODBC driver, perhaps there
is a way to configure it to use the ITIMER_VIRTUAL timer rather
than the ITIMER_REAL timer that Squeak uses (see the man page for
setitimer() for an explanation). This is unlikely, but it's at least
worth a look in the index of your manual (if there is such a thing).
You can see how Squeak sets its timer in the initTimers() function
in platforms/unix/vm/sqUnixMain.c.

I don't know what specific problems you are going to have in running
Squeak with its interval timer disabled, but it presumably might
include things that would give you an unresponsive image.


More information about the Squeak-dev mailing list