bug in tile_cache

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Threaded gimp crashes very frequently:

|(gdb) run
|Starting program: /usr/local/bin/gimp 
|Message: Passed serialization test
|
|[New Thread 31563 (manager thread)]
|[New Thread 31552 (initial thread)]
|[New Thread 31564]
|starting tile preswapper
|
|** WARNING **: gdisplays_flush() called recursively.
|!
|[Switching to Thread 31564]
|
|Program received signal SIGSEGV, Segmentation fault.
|0x818c596 in tile_idle_thread (data=0x0) at tile_cache.c:300
|300			list->last = tile->prev;
|(gdb) 

Though I DON'T understand the code well, the following patch (w/ a garbage)
makes gimp much stable. Please check it. Is this correct logic?

Index: tile_cache.c
===================================================================
RCS file: /cvs/gnome/gimp/app/tile_cache.c,v
retrieving revision 1.12
diff -u -r1.12 tile_cache.c
--- tile_cache.c	1999/10/04 15:31:14	1.12
+++ tile_cache.c	1999/11/19 18:04:59
@@ -290,17 +290,18 @@
 	  if (tile->dirty) 
 	    {
 	      list = tile->listhead;
+	      if (! list) printf ("!\n");
 	      
 	      if (list == &dirty_list) cur_cache_dirty -= tile_size (tile);
 	      
 	      if (tile->next) 
 		tile->next->prev = tile->prev;
-	      else
+	      else if (list)
 		list->last = tile->prev;
 	      
 	      if (tile->prev)
 		tile->prev->next = tile->next;
-	      else
+	      else if (list)
 		list->first = tile->next;
 	      
 	      tile->next = NULL;

Best regards,
-- 
narazaki@xxxxxxxx			(Shuji Narazaki)


[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux