Re: Recursive arena lock?

New Message Reply Date view Thread view Subject view Author view

From: Allan Schaffer (allan++at++sgi.com)
Date: 06/05/2001 09:38:22


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


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2b29 : Tue Jun 05 2001 - 09:38:38 PDT

This message has been cleansed for anti-spam protection. Replace '++at++' in any mail addresses with the '@' symbol.