Bug 413 - Crash when exercises were manually invoked during the warning screen of a mini break
Status:
RESOLVED FIXED
Component:
Core :: Win32
Version:
1.6.1
Hardware:
PC Windows 2000
Importance:
P4 normal
Target Milestone:
---
Assignee:
Raymond Penners
URL:
Depends on:
Blocks:
Reported:
Jul 12 2004 05:49:17 UTC
by:
Dennis
Modified:
Mar 10 2008 20:58:00 UTC
WhoWhenWhatRemovedAdded
Rob CaelersAug 19 2004 13:02:11 UTCstatusNEWASSIGNED
Rob CaelersAug 27 2007 14:03:44 UTCpriorityP2P4
Rob CaelersMar 10 2008 20:58:00 UTCstatusASSIGNEDRESOLVED
resolutionFIXED
Description
Dennis  Jul 12 2004 05:49:17 UTC
Crash when exercises were manually invoked during the warning screen of a mini 
break.

The crashlog:
Crash log created on 12/07/2004 at 14:42:40.

version = 1.6.1
compile date = May 13 2004
compile time = 21:17:19
features = DISTRIBUTION EXERCISES GNET GNET2 GTK_MULTIHEAD 


code = c0000005
flags = 0
address = 546326
params = 2
\\Ws029644\c$\Program Files\Workrave\lib\Workrave.exe caused an Access Violation 
at location 00546326 reading from location 0008010d

Registers:

eax=00080101 ebx=011957a8 ecx=00000050 edx=00000005 esi=01199490 edi=003a11a8
eip=00546326 esp=0022f8e0 ebp=0022f8fc iopl=0         nv up ei pl zr na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00010246

Stack trace:

PC        Frame     Ret
00546326  0022F8FC  00402B21
00402B21  0022F90C  00542C93
00542C93  0022F91C  00544B4F
00544B4F  0022F93C  00512843
00512843  0022F97C  0034C73B
0034C73B  0022F9AC  0034D07C
0034D07C  0022F9FC  0034D6E3
0034D6E3  0022FA3C  0034A21F
0034A21F  0022FA7C  009CD109
009CD109  0022FA9C  00462961
00462961  0022FAAC  004627AF
004627AF  0022FACC  00402A41
00402A41  0022FAF0  0041AE78
0041AE78  0022FB04  0041AEF0
0041AEF0  0022FF08  0053467B
0053467B  0022FF80  00401182
00401182  0022FFB0  00401038
00401038  0022FFC0  7C581AF6
7C581AF6  0022FFF0  00000000

Registry dump:

key = Software\Workrave

key = Software\Workrave\distribution
  value = port
  string data = 27273
  value = reconnect_attempts
  string data = 5
  value = reconnect_interval
  string data = 15

key = Software\Workrave\gui

key = Software\Workrave\gui\applet
  value = cycle_time
  string data = 10
  value = enabled
  string data = 1

key = Software\Workrave\gui\applet\daily_limit
  value = position
  string data = 0
  value = flags
  string data = 0

key = Software\Workrave\gui\applet\micro_pause
  value = position
  string data = 0
  value = flags
  string data = 0

key = Software\Workrave\gui\applet\rest_break
  value = position
  string data = 0
  value = flags
  string data = 0

key = Software\Workrave\gui\breaks
  value = block_mode
  string data = 0

key = Software\Workrave\gui\breaks\daily_limit
  value = max_preludes
  string data = 3
  value = max_postpone
  string data = -1
  value = ignorable_break
  string data = 1
  value = enabled
  string data = 1
  value = exercises
  string data = 0

key = Software\Workrave\gui\breaks\micro_pause
  value = max_preludes
  string data = 3
  value = max_postpone
  string data = -1
  value = ignorable_break
  string data = 1
  value = enabled
  string data = 1
  value = exercises
  string data = 0

key = Software\Workrave\gui\breaks\rest_break
  value = max_preludes
  string data = 3
  value = max_postpone
  string data = -1
  value = ignorable_break
  string data = 1
  value = enabled
  string data = 1
  value = exercises
  string data = 3

key = Software\Workrave\gui\main_window
  value = x
  string data = -82
  value = y
  string data = -71
  value = head
  string data = 0
  value = cycle_time
  string data = 10
  value = enabled
  string data = 0
  value = always_on_top
  string data = 0

key = Software\Workrave\gui\main_window\daily_limit
  value = position
  string data = 2
  value = flags
  string data = 0

key = Software\Workrave\gui\main_window\micro_pause
  value = position
  string data = 0
  value = flags
  string data = 0

key = Software\Workrave\gui\main_window\rest_break
  value = position
  string data = 1
  value = flags
  string data = 0

key = Software\Workrave\sound
  value = enabled
  string data = 1
  value = device
  string data = soundcard

key = Software\Workrave\timers

key = Software\Workrave\timers\daily_limit
  value = limit
  string data = 14400
  value = auto_reset
  string data = 0
  value = reset_pred
  string data = day/4:00
  value = snooze
  string data = 1200
  value = activity_sensitive
  string data = 1

key = Software\Workrave\timers\micro_pause
  value = limit
  string data = 300
  value = auto_reset
  string data = 30
  value = reset_pred
  string data = 
  value = snooze
  string data = 150
  value = activity_sensitive
  string data = 1

key = Software\Workrave\timers\rest_break
  value = limit
  string data = 2700
  value = auto_reset
  string data = 300
  value = reset_pred
  string data = 
  value = snooze
  string data = 180
  value = activity_sensitive
  string data = 1
Comment 1
Rob Caelers  Aug 19 2004 13:02:11 UTC
I haven't been able to reproduce this bug. Can you reproduce this bug? Did you
use the menu of the system tray icon or the menu of the status window?

It seems that workrave crashes when emitting the heartbeat signal. The exercises
panel connects to this signal at creation. If win32 messages (from the sys tray
menu) are handled on a separate thread, this might be a race condition...

00546326  SigC::Signal0<void, SigC::Marshal<void> >::emit_(void*)
00402B21  GUI::on_timer()
00542C93  SigC::ObjectSlot0_<bool, GUI>::proxy(void*)
00544B4F  SigC::Slot0<bool>::operator()()
Comment 2
Rob Caelers  Mar 10 2008 20:58:00 UTC
This separate thread I mentioned is no longer used. So I assume that the race condition and crash are gone.

(previously one thread was emitting a signal while the other was connecting to the signal).

Closing bug. feel free to reopen if you still manage to crash workrave by starting the exercises.