[nas] (resend) hard hang in libaoss.so

Paul Fox pgf at foxharp.boston.ma.us
Wed Jul 3 14:09:30 MDT 2013


i believe the problem is that if we take an alarm signal while still
in the middle of disableProcessFlow(), we'll call disableProcessFlow()
again.  so rather than clearing the processFlowEnabled flag when we're
finished disabling, we should probably clear it beforehand, as in this
patch.

(i'm not _absolutely_ sure this is a good fix, since i'm debugging
this remotely, on a system at home with no speakers connected, which
isn't the most complete way to debug nasd.  but gdb says it's doing
the right thing.  :-)

paul

diff --git a/trunk/server/dda/voxware/auvoxware.c b/trunk/server/dda/voxware/auvoxware.c
index fe2bb19..b0cb4d3 100644
--- a/trunk/server/dda/voxware/auvoxware.c
+++ b/trunk/server/dda/voxware/auvoxware.c
@@ -1336,6 +1336,8 @@ disableProcessFlow(void)
     if (processFlowEnabled) {
 #endif /* sco */
 
+        processFlowEnabled = AuFalse;
+
         ioctl(sndStatOut.fd, SNDCTL_DSP_SYNC, NULL);
 #ifndef sco
         rate = sndStatOut.curSampleRate;
@@ -1358,8 +1360,6 @@ disableProcessFlow(void)
         oneMoreTick();
 #endif
 
-        processFlowEnabled = AuFalse;
-
         if (relinquish_device)
             closeDevice();
 


----------------------
 paul fox, pgf at foxharp.boston.ma.us (arlington, ma, where it's 79.5 degrees)


More information about the nas mailing list