From: Sebastian Capella (scapella++at++gstone.com)
Date: 06/05/2001 13:54:29
The result is that the process hangs during shutdown.
-----Original Message-----
From: guest++at++holodeck.engr.sgi.com [mailto:guest++at++holodeck.engr.sgi.com]On
Behalf Of Allan Schaffer
Sent: Tuesday, June 05, 2001 9:38 AM
To: Sebastian Capella; Performer mailing list
Subject: Re: Recursive arena lock?
On Jun 4, 10:32am, Sebastian Capella wrote:
> I'm getting this message when I exit my program. It happens during my
> cleanup. Does anyone know why this would happen?
That happens when the semaphore operation in arena_lock() gets an
interrupt (and fails). It then tries again, recursing back into
itself until there are no more interrupts.
This was put in place to fix a more common problem: when attaching to
a performer process in the debugger, if you did ^C in a process that
was waiting for a lock, the lock would be broken by the interrupt and
cause problems downstream. This code puts the lock back in place
before giving control to the debugger.
In pseudocode,
arena_lock()
{
...
semop(p)
...
if (failed) /* errno contains the error ID */
if (errno == EINTR)
arena_lock()
else if ...
...
}
The item to investigate, what's generating all the interrupts? [also
what's the overall symptom -- segfault?]
Allan
--
Allan Schaffer allan++at++sgi.com
Engineering Manager, OpenGL Performer 1-650-933-2160
Silicon Graphics http://reality.sgi.com/allan
-----------------------------------------------------------------------
List Archives, FAQ, FTP: http://www.sgi.com/software/performer/
Open Development Project: http://oss.sgi.com/projects/performer/
Submissions: info-performer++at++sgi.com
Admin. requests: info-performer-request++at++sgi.com
This archive was generated by hypermail 2b29 : Tue Jun 05 2001 - 13:55:28 PDT