[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: more IDL falls asleep
hi all,
the folks at RSI responded re this problem, and it has to deal with the
license manager. here's the applicable parts of their reply (the technical
term for IDL sleeping and never waking up again is "deadlock"):
If it is indeed deadlock, then I believe you are encountering a weakness in
FLEXlm licensing that is generally only observable in very "large" IDL
processes. It is based on an implementation of malloc() in FLEXlm that is
not thread-safe. To keep a constant tab on licensing status in its network
FLEXlm sends out a periodic query to each of its clients. This query uses
the unsafe malloc() call. There is a very minute probability that this call
might be concurrent with an IDL use of system malloc(), and that is where
the deadlock occurs. Very large IDL processes that have many calls
allocating new memory are capable of defying the odds and experiencing this
deadly concurrency. We have actually never been able to (knowingly)
reproduce this in-house, but identified the clash in 'pstack' output from
our customers. You also would probably see the concurrent malloc() calls in
your own run of 'pstack' on the ID of a process that has "fallen asleep."
Our only solution is Research Systems' own licensing protocol, Genver
licensing. The downside to Genver licensing is that it must be renewed every
180 days, and you must have a separate license for each individual host that
is running your long IDL programs.
they're working on fixing this for the 5.5 release, but aren't sure if it will
be ready then, since fixing it is actually quite tricky.
hope this helps others experiencing this problem!
best,
-Johnny
-------------------------------------------
Johnny Lin
CIRES, University of Colorado
Work Phone: (303) 735-1636
Web: http://cires.colorado.edu/~johnny/
-------------------------------------------