hello
ever seen something like this?
Codecompiled with : BCB 2007
madExcept version : 4.0.3
callstack crc : $33f7415a, $b800ab47, $c99bf7a8
exception number : 2
exception class : EAccessViolation
exception message : Access violation at address 0065FE01 in module 'Debt.exe'. Read of address 00000000
main thread ($f5c):
0065fe01 +021 Debt.exe Classes 2993 +3 TList.Get
00b0b5df +00b Debt.exe cxNavigator TcxNavigatorViewInfo.GetButton
00b0b12a +01a Debt.exe cxNavigator TcxNavigatorViewInfo.UpdateButtonsEnabled
00b0b108 +00c Debt.exe cxNavigator TcxNavigatorViewInfo.Update
00701c77 +003 Debt.exe cxGridCustomTableView TcxNavigatorSiteViewInfo.NavigatorStateChanged
00701f1b +003 Debt.exe cxGridCustomTableView TcxCustomGridTableViewInfo.NavigatorStateChanged
006ece1c +020 Debt.exe cxGridCustomTableView TcxCustomGridTableView.RefreshNavigators
006ec447 +113 Debt.exe cxGridCustomTableView TcxCustomGridTableView.UpdateControl
0069dd23 +013 Debt.exe cxCustomData TcxCustomDataController.UpdateControl
0069c621 +029 Debt.exe cxCustomData TcxCustomDataController.NotifyControl
0069efd5 +03d Debt.exe cxCustomData TcxCustomDataController.FocusedNotification
0069edd3 +053 Debt.exe cxCustomData TcxCustomDataController.Update
0069bf49 +045 Debt.exe cxCustomData TcxCustomDataController.CheckChanges
0069bf6e +016 Debt.exe cxCustomData TcxCustomDataController.Change
006a2e5c +0e4 Debt.exe cxCustomData TcxCustomDataControllerInfo.ForwardChanges
006a3abd +10d Debt.exe cxCustomData TcxCustomDataControllerInfo.Update
006a0b02 +01a Debt.exe cxCustomData TcxCustomDataControllerInfo.CheckChanges
006a0adf +003 Debt.exe cxCustomData TcxCustomDataControllerInfo.EndUpdate
00698b16 +006 Debt.exe cxCustomData TcxCustomDataController.EndUpdate
006b2bd6 +04e Debt.exe cxDBData TcxDBDataController.UpdateFocused
0069dcdf +007 Debt.exe cxCustomData TcxCustomDataController.DataScrolled
00695e0c +008 Debt.exe cxCustomData TcxCustomDataProvider.DataScrolled
006adf9a +0b2 Debt.exe cxDBData TcxDBDataProvider.DataScrolled
006aba91 +005 Debt.exe cxDBData TcxDBDataLink.DataSetScrolled
006ab9a7 +197 Debt.exe cxDBData TcxDBDataLink.DataSetChanged
00655225 +0bd Debt.exe DB 7693 +19 TDataLink.DataEvent
006ab7f7 +00f Debt.exe cxDBData TcxDBDataLink.DataEvent
0065580b +03f Debt.exe DB 7965 +4 TDataSource.NotifyLinkTypes
0065583a +01e Debt.exe DB 7972 +3 TDataSource.NotifyDataLinks
00655867 +023 Debt.exe DB 7980 +4 TDataSource.DataEvent
00659da5 +131 Debt.exe DB 10036 +36 TDataSet.DataEvent
004bf92c +058 Debt.exe dbclient 1765 +10 TCustomClientDataSet.DataEvent
00447ef3 +037 Debt.exe Vclientdataset 1199 +5 TVClientDataSet.DataEvent
0044e4f2 +1a2 Debt.exe Vclientdataset 4212 +32 TVClientDataSet.Resync
0044df23 +06b Debt.exe Vclientdataset 4052 +11 TVClientDataSet.NotifyCallback
004ef0bc +010 Debt.exe hbcore.imp 8300 +0 VMidasLib._17634
004e0a24 +068 Debt.exe hbcore.imp 3856 +11 VMidasLib._17449
004c2619 +031 Debt.exe dbclient 2996 +4 TCustomClientDataSet.UndoLastChange
00469b7e +052 Debt.exe frmclaimnewunit.cpp 2414 +3 TfrmClaim.actUndoLastChangeExecute
0066b33f +00f Debt.exe Classes 11081 +3 TBasicAction.Execute
009777c9 +031 Debt.exe actnlist 388 +1 TContainedAction.Execute
00978490 +050 Debt.exe actnlist 1000 +7 TCustomAction.Execute
0066b20b +013 Debt.exe Classes 11010 +2 TBasicActionLink.Execute
00787a2e +052 Debt.exe dxBar TdxBarItem.DoClick
007879ab +03b Debt.exe dxBar TdxBarItem.DirectClick
00781f3b +11f Debt.exe dxBar TdxBarItemControl.ControlUnclick
00785609 +059 Debt.exe dxBar TdxBarButtonControl.ControlUnclick
007adfe3 +0df Debt.exe dxBar TCustomdxBarControl.DoLButtonUp
0078a0a1 +0d1 Debt.exe dxBar TdxBarControl.DoLButtonUp
007acb00 +028 Debt.exe dxBar TCustomdxBarControl.WMLButtonUp
007b130d +02d Debt.exe dxBar TdxBarDockedControl.WMLButtonUp
00626923 +2bb Debt.exe Controls 5146 +83 TControl.WndProc
0062a96f +4fb Debt.exe Controls 7304 +111 TWinControl.WndProc
007ad62d +201 Debt.exe dxBar TCustomdxBarControl.WndProc
007aef47 +007 Debt.exe dxBar TCustomdxBarControl.GetEquivalentParentBar
007ae1d6 +01a Debt.exe dxBar TCustomdxBarControl.CanProcessMouseMessage
0062a098 +02c Debt.exe Controls 7073 +3 TWinControl.MainWndProc
0066c000 +014 Debt.exe Classes 11583 +8 _17350
76102e3c +00a USER32.dll DispatchMessageA
0061c750 +0fc Debt.exe forms 8105 +23 TApplication.ProcessMessage
0061c78a +00a Debt.exe forms 8124 +1 TApplication.HandleMessage
0061ca7f +0b3 Debt.exe forms 8223 +20 TApplication.Run
004b69bd +2ed Debt.exe frmmainunit.cpp 297 +78 WinMain_
004b3f0f +00f Debt.exe debt.cpp 35 +2 WinMain
The best answer DevEx support can give you is 'yes' ;-)
You should upload a small sample program, tell what you're doing.
Hello,
It seems that the most similar CallStack I saw is the one provided in the Access Violation in DBTableView ticket. However, the cause of the problem was not discovered there. It seems that Navigator's ViewInfo has become invalid somehow. Jan is right, it would be appreciated if you can isolate the problem within a small demo project.
I have seen this problem here too. For now our workaround is to call BeginUpdate/EndUpdate of GridView instead of gridviews DataController.
We have located the problem in method TcxNavigatorViewInfo.UpdateInfoPanel. The call to NavigatorOwner.RefreshNavigator will result in recalculation of the view info (recreate objects) in some cases. You can see this in the debugger because the NavigatorOwner property will be nil after this call, since the "current" objects are freed ("old" GridViewInfo will be destroyed/freed).
When returning from this method, UpdateButtonsEnabled will get called and will result in accessing already freed objects. Depending on the memory manager implementation this will result in unpredictible effects.
I hope this explanation will help devexpress support in fixing this error.
BTW: We are using dx 12.2.2
Best regards,
Andre
Hello Andre,
Can you provide us with a sample project so we can replicate your scenario on our side?
I have attached a sample project enforcing the error. I had to patch a method to enforce a different memory block, when view info gets recreated.
Best regards,
Andre
Thank you for your sample project. I have compiled and run it. Would you please clarify what I should do to reproduce the error?
Start the program and hit the button "btn1". Depending on the build configuration, an access violation or an assertion error should be raised.
Do you have tried my compiled version?
Hello,
No, I was not able to run your executable file. It immediately reports an error in rtl160.bpl. Moreover, your project contains the VCLFixPack unit. is it necessary to reproduce the issue?
I have used "Delphi XE2 Update 4 HotFix 1" to compile the executable.
- Which version do you have?
- Are you able to compile the demo project without changes?
VCLFixPack is needed to hook TcxCustomGridViewInfo.RecreateViewInfos. Otherwise the error won't be visible immediatly, but only when there is much memory load in the application and this would be much more work to reproduce.
I can compile a statically linked executable if you like.
Here is the project in both configurations: With and without packages.
In addition I have enabled madExcept to show advanced exception information like call stacks and so on.
Thank you for you research. I have reproduced the error with your project and forwarded this ticket to our developers for research. It can take us some time to examine it. Thank you for your patience.