View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0006384 | JEDI Code Library | IDE Experts | public | 2015-02-19 14:43 | 2015-08-13 00:10 |
| Reporter | vintagedave | Assigned To | |||
| Priority | normal | Severity | crash | Reproducibility | sometimes |
| Status | new | Resolution | open | ||
| Product Version | Version 2.5 (Subversion repository/Daily zips) | ||||
| Target Version | Fixed in Version | ||||
| Summary | 0006384: EFOpenError accessing EXE file when TestInsight is installed | ||||
| Description | I have Stefan Glienke's TestInsight unit testing expert installed, and configured to run tests when idle. (See http://delphisorcery.blogspot.co.uk/2015/02/testinsight-unit-testing-like-pro.html ) This plugin compiles and runs the current project EXE periodically. When a project is set up with JCL debug support (that is, JCLD enabled for the project, and JDGB info built into the EXE too, and USE_JCLDEBUG defined in the unit testing project), TestInsight allows you to jump to the error point by double-clicking a failing test. So far so good. About 50% of the time, which can be every few seconds (!), I get an EFOpenError exception accessing the project EXE file shown in a JCL dialog, saying the exception occurred in an expert of the JCL. Probably, and this is guesswork, the JCL is exclusively trying to access the EXE at the same time the IDE is either compiling, linking, or running it. You may want to get in touch with Stefan about this too. It significantly reduces the usefulness of both JCL and TestInsight, and both are very useful addons. | ||||
| Additional Information | Exception message is: An exception was raised in an expert of the JCL. Exception class name: EFOpenError Exception message: Cannot open file "W:\..\Test\Win32\Debug\MyUnitTests.exe". The process cannot access the file because it is being used by another process (0017A910){Jcl210.bpl } [4817B910] Jcldebug.TJclStackInfoList + $A8 (0017A526){Jcl210.bpl } [4817B526] Jcldebug.JclCreateStackList + $1A (00004087){JclBaseExpert210.bpl} [58005087] Jclotaexceptionform.TJclExpertExceptionForm.ShowException + $13B (0000B3DB){JclBaseExpert210.bpl} [5800C3DB] Jclotautils.JclExpertShowExceptionDialog + $33 (00008135){JclDebugExpert210.bpl} [58159135] Jcldebugideimpl.TIdeNotifier.AfterCompile + $3D (0010804E){rtl210.bpl } [5015904E] System.Classes.TFileStream.Create (Line 8181, "System.Classes.pas" + 19) + $3F (0000074A){exceptiondiag210.bpl} [51C2174A] SysInit.@GetTls (Line 736, "SysInit.pas" + 23) + $0 (00076FE4){exceptiondiag210.bpl} [51C97FE4] JclHookExcept.DoExceptNotify (Line 267, "JclHookExcept.pas" + 27) + $0 (00008C79){rtl210.bpl } [50059C79] System.@ReallocMem (Line 4513, "System.pas" + 21) + $0 (0017DC09){rtl210.bpl } [501CEC09] System.Contnrs.TObjectList.Notify (Line 342, "System.Contnrs.pas" + 5) + $2 (00100D4A){rtl210.bpl } [50151D4A] System.Classes.TList.Add (Line 4216, "System.Classes.pas" + 7) + $4 (0017DA78){rtl210.bpl } [501CEA78] System.Contnrs.RaiseListError (Line 249, "System.Contnrs.pas" + 2) + $2 (0007C33A){exceptiondiag210.bpl} [51C9D33A] JclDebug.TJclModuleInfoList.CreateItemForAddress (Line 994, "JclDebug.pas" + 19) + $4 (00008CAB){rtl210.bpl } [50059CAB] System.@ReallocMem (Line 4583, "System.pas" + 91) + $0 (0001387A){rtl210.bpl } [5006487A] System.DynArraySetLength (Line 33933, "System.pas" + 84) + $13 (0001391D){rtl210.bpl } [5006491D] System.@DynArraySetLength (Line 33986, "System.pas" + 3) + $0 (001011D6){rtl210.bpl } [501521D6] System.Classes.TList.SetCapacity (Line 4462, "System.Classes.pas" + 5) + $B (0000EA98){rtl210.bpl } [5005FA98] System.TMonitor.CheckOwningThread (Line 17207, "System.pas" + 2) + $0 (0000EDA2){rtl210.bpl } [5005FDA2] System.TMonitor.Exit (Line 17393, "System.pas" + 1) + $2 (0000EDF3){rtl210.bpl } [5005FDF3] System.TMonitor.Exit (Line 17415, "System.pas" + 2) + $7 (00101AD7){rtl210.bpl } [50152AD7] System.Classes.TThreadList.RemoveItem (Line 4717, "System.Classes.pas" + 7) + $4 (00081E48){exceptiondiag210.bpl} [51CA2E48] JclDebug.TJclGlobalStackList.AddObject (Line 3727, "JclDebug.pas" + 12) + $3 (000827B6){exceptiondiag210.bpl} [51CA37B6] JclDebug.JclCreateStackList (Line 4044, "JclDebug.pas" + 2) + $7 (00082657){exceptiondiag210.bpl} [51CA3657] JclDebug.DoExceptionStackTrace (Line 3984, "JclDebug.pas" + 17) + $E (00082660){exceptiondiag210.bpl} [51CA3660] JclDebug.DoExceptionStackTrace (Line 3984, "JclDebug.pas" + 17) + $17 (0010804E){rtl210.bpl } [5015904E] System.Classes.TFileStream.Create (Line 8181, "System.Classes.pas" + 19) + $3F (0000074A){exceptiondiag210.bpl} [51C2174A] SysInit.@GetTls (Line 736, "SysInit.pas" + 23) + $0 (00076FE4){exceptiondiag210.bpl} [51C97FE4] JclHookExcept.DoExceptNotify (Line 267, "JclHookExcept.pas" + 27) + $0 (0007704B){exceptiondiag210.bpl} [51C9804B] JclHookExcept.HookedRaiseException (Line 287, "JclHookExcept.pas" + 6) + $7 (0010804E){rtl210.bpl } [5015904E] System.Classes.TFileStream.Create (Line 8181, "System.Classes.pas" + 19) + $3F (00107F08){rtl210.bpl } [50158F08] System.Classes.TFileStream.Create (Line 8151, "System.Classes.pas" + 1) + $7 (00172C7C){Jcl210.bpl } [48173C7C] Jcldebug.InsertDebugDataIntoExecutableFile + $A4 (000125C0){rtl210.bpl } [500635C0] System.@FinalizeRecord (Line 31136, "System.pas" + 25) + $0 (00015A9C){rtl210.bpl } [50066A9C] System.@IntfClear (Line 36046, "System.pas" + 10) + $0 (000126D0){rtl210.bpl } [500636D0] System.@FinalizeArray (Line 31435, "System.pas" + 139) + $0 (000125C0){rtl210.bpl } [500635C0] System.@FinalizeRecord (Line 31136, "System.pas" + 25) + $0 (0000EB08){rtl210.bpl } [5005FB08] System.TMonitor.Destroy (Line 17229, "System.pas" + 0) + $0 (0000E18B){rtl210.bpl } [5005F18B] System.TObject.CleanupInstance (Line 15862, "System.pas" + 24) + $0 (00008C58){rtl210.bpl } [50059C58] System.@FreeMem (Line 4439, "System.pas" + 20) + $0 (0000E000){rtl210.bpl } [5005F000] System.TObject.FreeInstance (Line 15650, "System.pas" + 2) + $2 (0000E85A){rtl210.bpl } [5005F85A] System.@ClassDestroy (Line 16993, "System.pas" + 0) + $2 (0017E173){Jcl210.bpl } [4817F173] Jcldebug.Finalization + $BC7 (00008C58){rtl210.bpl } [50059C58] System.@FreeMem (Line 4439, "System.pas" + 20) + $0 (00010391){rtl210.bpl } [50061391] System.@UStrArrayClr (Line 24268, "System.pas" + 16) + $0 (00173A4A){Jcl210.bpl } [48174A4A] Jcldebug.TJclBinDebugGenerator.CreateData + $5A2 (0000E87D){rtl210.bpl } [5005F87D] System.@AfterConstruction (Line 16999, "System.pas" + 2) + $5 (00172B4E){Jcl210.bpl } [48173B4E] Jcldebug.InsertDebugDataIntoExecutableFile + $56 (00004B35){JclDebugExpert210.bpl} [58155B35] Jcldebugideimpl.TJclDebugExtension.AfterCompile + $249 (00008115){JclDebugExpert210.bpl} [58159115] Jcldebugideimpl.TIdeNotifier.AfterCompile + $1D (0041ED07){coreide210.bpl} [2086FD07] IDEServices.AfterCompile (Line 5080, "IDEServices.pas" + 11) + $15 (0009197B){coreide210.bpl} [204E297B] ProjectGroupBuilder.TProjectGroupBuilder.NotifyAfterCompile (Line 364, "ProjectGroupBuilder.pas" + 8) + $B (00119485){rtl210.bpl } [5016A485] System.Classes.CheckSynchronize (Line 14100, "System.Classes.pas" + 29) + $B (0026F043){fmx210.bpl } [08040043] FMX.Platform.Win.TPlatformWin.TextToShortCut (Line 3569, "FMX.Platform.Win.pas" + 2) + $1B (0011D214){rtl210.bpl } [5016E214] System.Classes.StdWndProc (Line 16598, "System.Classes.pas" + 6) + $1 (00185333){vcl210.bpl } [50716333] Vcl.Forms.TApplication.ProcessMessage (Line 10352, "Vcl.Forms.pas" + 23) + $1 (00185376){vcl210.bpl } [50716376] Vcl.Forms.TApplication.HandleMessage (Line 10382, "Vcl.Forms.pas" + 1) + $4 (001856A9){vcl210.bpl } [507166A9] Vcl.Forms.TApplication.Run (Line 10520, "Vcl.Forms.pas" + 26) + $3 | ||||
| Tags | No tags attached. | ||||
| Fixed in GIT commit | |||||
| Fixed in SVN revision | |||||
| IDE version | All | ||||
|
|
Note: this seems to be related to including the JDBG file inside the EXE - turning that off no longer causes the exception. |
|
|
Note: can an admin please remove the path to the EXE file in the exception message above? It's not relevant and I should probably not have included it for confidentiality reasons. I didn't realise it was there when I copy/pasted the exception message. |
|
|
Note: I said above it seems to be related to including the JDBG info in the EXE file. This is true, but it still occurs very rarely with this turned off. (The same exception just happened, and it's been a couple of hours instead of thirty seconds since the last time, because I turned off JDBG inclusion. However, turning this off obviously doesn't prevent it completely, just makes it less likely.) |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2015-02-19 14:43 | vintagedave | New Issue | |
| 2015-02-19 14:43 | vintagedave | IDE version | => All |
| 2015-02-19 14:56 | vintagedave | Note Added: 0021141 | |
| 2015-02-19 14:59 | vintagedave | Note Added: 0021142 | |
| 2015-02-19 15:58 | vintagedave | Note Added: 0021143 | |
| 2015-04-19 01:33 | AHUser | Additional Information Updated | |
| 2015-08-13 00:10 | AHUser | Additional Information Updated |