View Issue Details

IDProjectCategoryView StatusLast Update
0002023JEDI VCSClient (Gui)public2008-11-15 07:27
ReporterschuettecarstenAssigned Toschuettecarsten 
PrioritynormalSeverityminorReproducibilitysometimes
Status closedResolutionfixed 
Product Version2.40 (First JVCS release) 
Target VersionFixed in Version2.40 RC2 
Summary0002023: Delphi 7 IDE client: "exception 00000000 in thread execution"
Descriptionsometimes i get the message "exception 0x00000000 in thread execution" (or something like this) when I work with jedivcs in delphi 7. this is not reproduceable but might have to do with the auto-refreshof the project manager window when the refresh event is called while a threaded vcs-process is already active?
TagsNo tags attached.
Fix in JVCS version
Releasedocumentation

Relationships

child of 0002377 closed Releaseinfo: 2.40 gui client issues 

Activities

USchuster

2004-08-03 06:31

manager   ~0004874

Please build the IDE DLL with JCL debuginformation (make -Ddebug -DJCLDEBUG jedivcsdll.dll) and check callstack.

schuettecarsten

2004-08-03 06:58

developer   ~0004877

another thing which will maybe be the same:
1) open delphi 7 and go to project manager
2) press f5
3) while refresh works close delphi (do not close project manager window!)
4) you get some strange exceptions in coreide70.bpl (tobject.free)
5) after about 120 secs you get a client timeout message
delphi cannot be closed, always exceptions in coreide70.bpl.

schuettecarsten

2004-08-03 07:40

developer   ~0004903

Here is the callstack:

Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000.

Exception class: EAccessViolation
Thread: 000009BC [TJVCSJobThread] ""
----------------------------------------------------------------------------------------------------
Stack list, generated 03.08.2004 16:45:09
[030A4B3F] System.@HandleAnyException + $33
[0312A7BB] Controls.TWinControl.AlignControl + $F
[03126A4C] Controls.TControl.RequestAlign + $8
[0312DA5D] Controls.TWinControl.SetBounds + $C9
[0312A40A] Controls.DoPosition + $366
[0312BB13] Controls.TWinControl.WndProc + $157
[030CB200] Classes.StdWndProc + $14
[0312BBF7] Controls.TWinControl.DefaultHandler + $D7
[032362C0] JVCSThreads.TJVCSJobThread.Execute (Line 360, "..\common\JVCSThreads.pas" + 15) + $4
[0312BBF7] Controls.TWinControl.DefaultHandler + $D7
[030C9604] Classes.ThreadProc + $34
[0312BBF7] Controls.TWinControl.DefaultHandler + $D7
[030A54B4] System.ThreadWrapper + $28
[0312BBF7] Controls.TWinControl.DefaultHandler + $D7

schuettecarsten

2004-08-03 07:43

developer   ~0004905

there is another callstack, same error but different location:

Exception class: EAccessViolation
Thread: 00000D4C [TJVCSJobThread] ""
----------------------------------------------------------------------------------------------------
Stack list, generated 03.08.2004 16:48:01
[030A4B3F] System.@HandleAnyException + $33
[030CB200] Classes.StdWndProc + $14
[032362AA] JVCSThreads.TJVCSJobThread.Execute (Line 357, "..\common\JVCSThreads.pas" + 12) + $C
[030C9604] Classes.ThreadProc + $34
[030A54B4] System.ThreadWrapper + $28
-----------------------------------------------------------------------------------------------

schuettecarsten

2004-08-12 11:42

developer   ~0004992

seems to have to do with the message handling in the thread. why was this added?

USchuster

2004-08-13 03:50

manager   ~0004996

The message handling was added in connection with the thread
"The collision about the input method and the TJVCSJobThread, I don't know why" by "morgan mo" on 18 Apr 2004.
Meanwhile I found the following in the Delphi Win32 Help (Remark of Sleep)
"If a thread creates any windows, it must process messages.".
MidWare needs windows for its own messaging.

schuettecarsten

2004-08-20 13:18

developer   ~0005050

i think this message handling is not really neccessary because the window handles are created from the main thread (if i understood the midware sorce correctly).

as delphi vcl documentation said you should not call vcl methods from thread without "synchronize". the problem is that the message handling receives messages from different threads and sends them to vcl - unsynchronized.

schuettecarsten

2004-11-27 05:13

developer   ~0005726

this problem is really annoying. but it only occurs in the D7 DLL client.

USchuster

2004-11-27 11:03

manager   ~0005731

I still can't reproduce it with D5.
I can reproduce the exception if you close Delphi while refresh but this also happens without any ThreadJob.

As I wrote before this message handling is necessary because the sockets will be attached to the thread (Read about multitheading in WSocket.pas).
Without that message handling the client could freeze if you switch the keyboard language while you are in the "New Project" dialog or if you have "View modules" as double click action and double click on a module in the listview.
The message handling routine does only receive messages for it's thread.
I am not sure if DispatchMessage does dispatch a message only in the same thread.
The freezing bugs doesn't seams to appear if I comment out DispatchMessage in JVCSThreads.pas because the remark of Sleep "If a thread creates any windows, it must process messages." seams to be fulfilled with PeekMessage.
Any VCL stuff in the thread jobs is called with Synchronize.


Comment out DispatchMessage in JVCSThreads.pas and see what happens.

schuettecarsten

2004-11-29 14:05

developer   ~0005760

I've added some very dirty try, except, end-block.

I've also changed the "if PeekMessage() then" to "while PeekMessage() do" which increased performance during auto-synchronize or loading module lists from the server here.

Some more testing is needed...

schuettecarsten

2004-12-20 03:51

developer   ~0005939

there are still two issues... i will fix them :)

Stack list, generated 20.12.2004 11:06:40
[03194B5B] System.@HandleAnyException + $33
[033173EF] JVCSClientDispatcher.TJVCSClientDispatcher.KillOldClients (Line 261, "..\common\client\JVCSClientDispatcher.pas" + 5) + $3
[031BB528] Classes.StdWndProc + $14
[0335A266] JVCSThreads.TJVCSJobThread.Execute (Line 363, "..\common\JVCSThreads.pas" + 16) + $C
[031B992C] Classes.ThreadProc + $34
[031954D0] System.ThreadWrapper + $28
----------------------------------------

schuettecarsten

2005-01-10 03:00

developer   ~0006111

after my changes now the exception is gone, but delphi sometimes (not reproduceable) hangs on <Windowskey>+E, which should normally open an Explorer window. Still investigating...

schuettecarsten

2005-01-11 12:30

developer   ~0006123

fixed. see source code file JVCSThreads.pas for details.

Issue History

Date Modified Username Field Change
2004-08-03 02:30 schuettecarsten New Issue
2004-08-03 06:31 USchuster Note Added: 0004874
2004-08-03 06:58 schuettecarsten Note Added: 0004877
2004-08-03 07:40 schuettecarsten Note Added: 0004903
2004-08-03 07:43 schuettecarsten Note Added: 0004905
2004-08-12 11:42 schuettecarsten Note Added: 0004992
2004-08-13 03:50 USchuster Note Added: 0004996
2004-08-20 13:18 schuettecarsten Note Added: 0005050
2004-11-27 05:13 schuettecarsten Note Added: 0005726
2004-11-27 11:03 USchuster Note Added: 0005731
2004-11-29 14:05 schuettecarsten Note Added: 0005760
2004-11-29 14:05 schuettecarsten Assigned To => schuettecarsten
2004-11-29 14:05 schuettecarsten Status new => assigned
2004-11-30 14:16 schuettecarsten Status assigned => resolved
2004-11-30 14:16 schuettecarsten Fixed in Version => 2.40 (First JVCS release)
2004-11-30 14:16 schuettecarsten Resolution open => fixed
2004-11-30 14:19 schuettecarsten Status resolved => feedback
2004-11-30 14:19 schuettecarsten Resolution fixed => reopened
2004-11-30 14:20 schuettecarsten Status feedback => resolved
2004-11-30 14:20 schuettecarsten Fixed in Version 2.40 (First JVCS release) => 2.40 RC2
2004-11-30 14:20 schuettecarsten Resolution reopened => fixed
2004-12-20 03:51 schuettecarsten Status resolved => feedback
2004-12-20 03:51 schuettecarsten Resolution fixed => reopened
2004-12-20 03:51 schuettecarsten Note Added: 0005939
2004-12-20 03:51 schuettecarsten Status feedback => assigned
2004-12-20 03:52 schuettecarsten Relationship added child of 0002377
2005-01-10 03:00 schuettecarsten Note Added: 0006111
2005-01-11 12:30 schuettecarsten Status assigned => resolved
2005-01-11 12:30 schuettecarsten Resolution reopened => fixed
2005-01-11 12:30 schuettecarsten Note Added: 0006123
2008-11-15 07:27 THuber Status resolved => closed