View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002023 | JEDI VCS | Client (Gui) | public | 2004-08-03 02:30 | 2008-11-15 07:27 |
Reporter | schuettecarsten | Assigned To | schuettecarsten | ||
Priority | normal | Severity | minor | Reproducibility | sometimes |
Status | closed | Resolution | fixed | ||
Product Version | 2.40 (First JVCS release) | ||||
Target Version | Fixed in Version | 2.40 RC2 | |||
Summary | 0002023: Delphi 7 IDE client: "exception 00000000 in thread execution" | ||||
Description | sometimes 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? | ||||
Tags | No tags attached. | ||||
Fix in JVCS version | |||||
Releasedocumentation | |||||
child of | 0002377 | closed | Releaseinfo: 2.40 gui client issues |
|
Please build the IDE DLL with JCL debuginformation (make -Ddebug -DJCLDEBUG jedivcsdll.dll) and check callstack. |
|
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. |
|
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 |
|
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 ----------------------------------------------------------------------------------------------- |
|
seems to have to do with the message handling in the thread. why was this added? |
|
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. |
|
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. |
|
this problem is really annoying. but it only occurs in the D7 DLL client. |
|
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. |
|
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... |
|
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 ---------------------------------------- |
|
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... |
|
fixed. see source code file JVCSThreads.pas for details. |
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 |