[BRLTTY] BRLTTY 4.4 segfault with backtrace

Samuel Thibault samuel.thibault at ens-lyon.org
Sat Jun 16 20:02:04 EDT 2012


Jason White, le Fri 15 Jun 2012 13:33:43 +1000, a écrit :
> Program terminated with signal 11, Segmentation fault.
> #0  api_flush (brl=brl at entry=0x7f66f988aa40) at ../../Programs/brlapi_server.c:2459

Mmm, indeed, that could happen.  Could you test the attached patch?

Samuel
-------------- next part --------------
Index: Programs/brlapi_server.c
===================================================================
--- Programs/brlapi_server.c	(révision 6570)
+++ Programs/brlapi_server.c	(copie de travail)
@@ -331,7 +331,11 @@
 /* Returns !0 if driver can return specific keycodes, 0 if not. */
 static int isKeyCapable(const BrailleDriver *brl)
 {
-  return (((brl->readKey!=NULL) && (brl->keyToCommand!=NULL)) || (disp && disp->keyNameTables!=NULL));
+  int ret;
+  pthread_mutex_lock(&driverMutex);
+  ret = ((brl->readKey!=NULL) && (brl->keyToCommand!=NULL)) || (disp && disp->keyNameTables!=NULL);
+  pthread_mutex_unlock(&driverMutex);
+  return ret;
 }
 
 /* Function : suspendDriver */
@@ -2558,8 +2562,10 @@
   ApiBraille.readPacket = NULL;
   ApiBraille.writePacket = NULL;
   braille=&ApiBraille;
+  pthread_mutex_lock(&driverMutex);
   brlResize(brl);
   driverConstructed=1;
+  pthread_mutex_unlock(&driverMutex);
   pthread_mutex_lock(&connectionsMutex);
   broadcastKey(&ttys, BRLAPI_KEY_TYPE_CMD|BRLAPI_KEY_CMD_NOOP, BRL_COMMANDS);
   pthread_mutex_unlock(&connectionsMutex);
@@ -2582,8 +2588,8 @@
   pthread_mutex_lock(&driverMutex);
   if (!coreActive && driverConstructed)
     suspendDriver(disp);
+  disp = NULL;
   pthread_mutex_unlock(&driverMutex);
-  disp = NULL;
 }
 
 /* Function : api_identify */


More information about the BRLTTY mailing list