Bug 4433 - Stepping DisassemblyWindow causes "invalid next size (fast)"
Summary: Stepping DisassemblyWindow causes "invalid next size (fast)"
Status: RESOLVED FIXED
Alias: None
Product: frysk
Classification: Unclassified
Component: general (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Mike Cvet
URL:
Keywords:
Depends on:
Blocks: 1633 3200
  Show dependency treegraph
 
Reported: 2007-04-27 12:46 UTC by Mike Cvet
Modified: 2007-04-27 13:42 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mike Cvet 2007-04-27 12:46:30 UTC
Stepping the DisassemblyWindow on an Intel 64 machine with the Disassembly and 
Memory windows enabled (not by default) and open, along with the 
RegisterWindow, aborted with the following. Looks like it might be a bad JG 
pointer?

java.lang.Exception: gtk_list_store_set_value: assertion `VALID_ITER (iter, 
list_store)' failed
   at org.gnu.glib.GObject.printStackTrace(libgtkjava-2.8.so)
   at org.gnu.gtk.ListStore.gtk_list_store_set_value(libgtkjava-2.8.so)
   at frysk.gui.disassembler.DisassemblyWindow.refreshList(FryskGui)
   at frysk.gui.disassembler.DisassemblyWindow.handleFromSpin(FryskGui)
   at frysk.gui.disassembler.DisassemblyWindow$4.spinEvent(FryskGui)
   at org.gnu.gtk.SpinButton.fireSpinEvent(libgtkjava-2.8.so)
   at org.gnu.gtk.SpinButton.handleValueChanged(libgtkjava-2.8.so)
   at org.gnu.gtk.SpinButton.gtk_spin_button_set_value(libgtkjava-2.8.so)
   at frysk.gui.disassembler.DisassemblyWindow.resetPCAndList(FryskGui)
   at frysk.gui.disassembler.DisassemblyWindow$LockObserver$9.run(FryskGui)
   at org.gnu.glib.CustomEvents.runEvents(libgtkjava-2.8.so)
   at org.gnu.gtk.Gtk.gtk_main(libgtkjava-2.8.so)
   at frysk.gui.Gui.gui(FryskGui)
   at frysk.gui.FryskGui.main(FryskGui)
java.lang.NullPointerException
   at org.gnu.gtk.TreeIter.gtk_tree_model_iter_next(libgtkjava-2.8.so)
   at org.gnu.gtk.TreeIter.getNextIter(libgtkjava-2.8.so)
   at frysk.gui.disassembler.DisassemblyWindow.refreshList(FryskGui)
   at frysk.gui.disassembler.DisassemblyWindow.handleFromSpin(FryskGui)
   at frysk.gui.disassembler.DisassemblyWindow$4.spinEvent(FryskGui)
   at org.gnu.gtk.SpinButton.fireSpinEvent(libgtkjava-2.8.so)
   at org.gnu.gtk.SpinButton.handleValueChanged(libgtkjava-2.8.so)
   at org.gnu.gtk.SpinButton.gtk_spin_button_set_value(libgtkjava-2.8.so)
   at frysk.gui.disassembler.DisassemblyWindow.resetPCAndList(FryskGui)
   at frysk.gui.disassembler.DisassemblyWindow$LockObserver$9.run(FryskGui)
   at org.gnu.glib.CustomEvents.runEvents(libgtkjava-2.8.so)
   at org.gnu.gtk.Gtk.gtk_main(libgtkjava-2.8.so)
   at frysk.gui.Gui.gui(FryskGui)
   at frysk.gui.FryskGui.main(FryskGui)
*** glibc detected *** frysk-gui/frysk/gui/FryskGui: free(): invalid next size 
(fast): 0x000000000155c0f0 ***
======= Backtrace: =========
/lib64/libc.so.6[0x2aaab1f2aa30]
/lib64/libc.so.6(cfree+0x8c)[0x2aaab1f2e14c]
/usr/lib64/libgcj.so.7rh[0x2aaab027f42f]
/usr/lib64/libgcj.so.7rh[0x2aaab09b6b9a]
/usr/lib64/
libgcj.so.7rh(_ZN3gnu3gcj7runtime15FinalizerThread3runEJvv+0x49)[0x2aaab026f829]
/usr/lib64/
libgcj.so.7rh(_Z13_Jv_ThreadRunPN4java4lang6ThreadE+0x18)[0x2aaab027e738]
/usr/lib64/libgcj.so.7rh[0x2aaab0284f77]
/usr/lib64/libgcj.so.7rh[0x2aaab09c2a66]
/lib64/libpthread.so.0[0x2aaab188a305]
/lib64/libc.so.6(clone+0x6d)[0x2aaab1f8950d]
======= Memory map: ========
00400000-0098f000 r-xp 00000000 08:06 518503                             /home/
mcvet/workspace/build/frysk-gui/frysk/gui/FryskGui
00b8f000-00e46000 rw-p 0058f000 08:06 518503                             /home/
mcvet/workspace/build/frysk-gui/frysk/gui/FryskGui
00e46000-01969000 rw-p 00e46000 00:00 0                                  [heap]
40000000-40001000 ---p 40000000 00:00 0 
40001000-40a01000 rw-p 40001000 00:00 0 
40a01000-40a02000 ---p 40a01000 00:00 0 
40a02000-41402000 rw-p 40a02000 00:00 0 
41402000-41403000 ---p 41402000 00:00 0 
41403000-41e03000 rw-p 41403000 00:00 0 
41e03000-41e06000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
41e06000-41e09000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
41e09000-41e0c000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
41e0c000-41e0f000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
41e0f000-41e12000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
41e12000-41e15000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
41e15000-41e18000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
41e18000-41e1b000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
41e1b000-41e1e000 r--p 00000000 08:06 159285                             /home/
mcvet/stepper
2aaaaaaab000-2aaaaaac5000 r-xp 00000000 08:02 18223                      /lib64/
ld-2.5.so
2aaaaaac5000-2aaaaaac7000 rw-p 2aaaaaac5000 00:00 0 
2aaaaaac7000-2aaaaaad5000 r--p 00000000 08:02 189333                     /usr/
share/icons/Clearlooks/icon-theme.cache
2aaaaaae6000-2aaaaaae7000 rw-p 2aaaaaae6000 00:00 0 
2aaaaaae7000-2aaaaabe7000 rwxp 2aaaaaae7000 00:00 0 
2aaaaac83000-2aaaaacbd000 r--p 00000000 08:02 238826                     /usr/
share/fonts/dejavu-lgc/DejaVuLGCSansMono.ttf
2aaaaacc4000-2aaaaacc5000 r--p 00019000 08:02 18223                      /lib64/
ld-2.5.so
2aaaaacc5000-2aaaaacc6000 rw-p 0001a000 08:02 18223                      /lib64/
ld-2.5.so
2aaaaacc6000-2aaaaadac000 r-xp 00000000 08:02 20903                      /usr/
lib64/libstdc++.so.6.0.8
2aaaaadac000-2aaaaafab000 ---p 000e6000 08:02 20903                      /usr/
lib64/libstdc++.so.6.0.8
2aaaaafab000-2aaaaafb1000 r--p 000e5000 08:02 20903                      /usr/
lib64/libstdc++.so.6.0.8
2aaaaafb1000-2aaaaafb4000 rw-p 000eb000 08:02 20903                      /usr/
lib64/libstdc++.so.6.0.8
2aaaaafb4000-2aaaaafc6000 rw-p 2aaaaafb4000 00:00 0 
2aaaaafc6000-2aaaaafe2000 r-xp 00000000 08:02 340908                     /usr/
lib64/libgladejava-2.12.so
2aaaaafe2000-2aaaab1e2000 ---p 0001c000 08:02 340908                     /usr/
lib64/libgladejava-2.12.so
2aaaab1e2000-2aaaab1eb000 rw-p 0001c000 08:02 340908                     /usr/
lib64/libgladejava-2.12.so
2aaaab1eb000-2aaaab203000 r-xp 00000000 08:02 74288                      /usr/
lib64/libglade-2.0.so.0.0.7
2aaaab203000-2aaaab402000 ---p 00018000 08:02 74288                      /usr/
lib64/libglade-2.0.so.0.0.7
2aaaab402000-2aaaab404000 rw-p 00017000 08:02 74288                      /usr/
lib64/libglade-2.0.so.0.0.7
2aaaab404000-2aaaab405000 rw-p 2aaaab404000 00:00 0 
2aaaab405000-2aaaab539000 r-xp 00000000 08:02 22145                      /usr/
lib64/libxml2.so.2.6.27
2aaaab539000-2aaaab739000 ---p 00134000 08:02 22145                      /usr/
lib64/libxml2.so.2.6.27
2aaaab739000-2aaaab742000 rw-p 00134000 08:02 22145                      /usr/
lib64/libxml2.so.2.6.27
2aaaab742000-2aaaab743000 rw-p 2aaaab742000 00:00 0 
2aaaab743000-2aaaab760000 r-xp 00000000 08:02 83042                      /usr/
lib64/libvtejava-0.12.so
2aaaab760000-2aaaab95f000 ---p 0001d000 08:02 83042                      /usr/
lib64/libvtejava-0.12.so
2aaaab95f000-2aaaab965000 rw-p 0001c000 08:02 83042                      /usr/
lib64/libvtejava-0.12.so
2aaaab965000-2aaaabe8e000 r-xp 00000000 08:02 193390                     Aborted
Comment 1 Mike Cvet 2007-04-27 14:42:19 UTC
frysk-gui/frysk/gui:
2007-04-27  Mike Cvet  <mcvet@redhat.com>
	
	* disassembler/DisassemblyWindow.java (refreshLock): Added. Prevents
	event threads firing refresh requests simultaneously. Fixes #4433.
	(formatDialog.lifeCycleEvent): Removed refresh call.
	(fromSpin.spinEvent): Check refreshLock before refreshing.
	(toSpin.spinEvent): Ditto.
	(fromBox.entryEvent): Ditto.
	(toBox.entryEvent): Ditto.
	(resetTask): Set and unset refreshLock.
	(resetPCAndList): Ditto.
	(refreshList): Synchronized. Now uses global ListStore rather than
	grabbing the Store off of the View each time. Removed a redundant
	setValue() call.
	* memory/MemoryWindow.java (refreshLock): Added. Same as above.
	(formatDialog.lifeCycleEvent): Ditto.
	(fromSpin.spinEvent): Ditto.
	(toSpin.spinEvent): Ditto.
	(fromBox.entryEvent): Ditto.
	(toBox.entryEvent): Ditto.
	(resetTask): Ditto.
	(resetPCAndList): Ditto.
	(refreshList): Synchronized, uses global ListStore.

frysk-gui/frysk/gui/srcwin:
2007-04-27  Mike Cvet  <mcvet@redhat.com>

	* SourceWindow.java (currentStackChanged): Check the State of the new
	StackFrame's Task before updating any of the other windows.