Project JEDI - Issue Tracker
Mantis Bugtracker

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0004497 [JEDI VCL] 00 JVCL Components major always 2008-10-05 01:46 2008-10-07 00:15
Reporter corwin View Status public  
Assigned To obones
Priority normal Resolution fixed  
Status resolved   Product Version Daily / GIT
Summary 0004497: Application don't answer after TjvDice is stopped
Description IDE: Delphi 7 update 1, Delphi 2007 update 3, Delphi 2009.
OS: Windows XP SP3 ENG.
If run application containing TJVdice component, set it Rotate property
to True, than to False. After that application stops to answer.
Additional Information
Tags No tags attached.
Attached Files zip file icon JvDiceTest.zip [^] (1,109 bytes) 2008-10-06 16:03

- Relationships

-  Notes
(0014744)
corwin (reporter)
2008-10-05 03:20

I've made some investigations and find out that it happens in destructor TJvTimerThread.Destroy at line inherited Destroy;
where original TTread destructor cames into infinite loop.
(0014748)
jfudickar (developer)
2008-10-05 06:55

Could you create a small sample?
(0014761)
obones (administrator)
2008-10-06 00:05

Yes, please post the zipped sources of a sample application showing this issue.
(0014764)
corwin (reporter)
2008-10-06 01:41

Well it can be seen even under IDE, put TJVDice on form set Rotate to True,
then to False. IDE will hang.
(0014771)
jfudickar (developer)
2008-10-06 16:03

The Problem is in TJvTimer.Destroy.

The point is that after FTimerThread.Terminate; the procedure TJvTimerThread.Execute; is not stopped.

Don't know why, but i can't figure out the problem.
Maybe it's too late for me :-)
(0014772)
obones (administrator)
2008-10-07 00:02

That's "logical". Calling Terminate merely sets Terminated to True and it is the responsibility of the Execute method to regularly test this value and stop when it changes to "True".
What the problem is here is that the thread is waiting for the code inside "TimerFires" to terminate, but this code is waiting for the thread to terminate thru FTimer.Free;
This code is the source of the deadlock. I'm modifying it right now to make it work better and still avoid memory leaks.
(0014773)
obones (administrator)
2008-10-07 00:14

This is now fixed in SVN, revision 11945

- Issue History
Date Modified Username Field Change
2008-10-05 01:46 corwin New Issue
2008-10-05 03:21 corwin Note Added: 0014744
2008-10-05 06:55 jfudickar Note Added: 0014748
2008-10-06 00:05 obones Note Added: 0014761
2008-10-06 00:05 obones Status new => feedback
2008-10-06 01:41 corwin Note Added: 0014764
2008-10-06 16:03 jfudickar Note Added: 0014771
2008-10-06 16:03 jfudickar File Added: JvDiceTest.zip
2008-10-07 00:02 obones Note Added: 0014772
2008-10-07 00:02 obones Status feedback => confirmed
2008-10-07 00:14 obones Status confirmed => resolved
2008-10-07 00:14 obones Fixed in Version => Daily / SVN
2008-10-07 00:14 obones Resolution open => fixed
2008-10-07 00:14 obones Assigned To => obones
2008-10-07 00:14 obones Note Added: 0014773


Mantis 1.1.6[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker