Greetings XSharp developers.
We've encountered some sort of memory exception when printing from ReportPro3:
Application: ReportPro3.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.AccessViolationException
at ReportPro3_Designer.Functions.ExtTextOut(Void*, Int32, Int32, UInt32, Void*, Void*, UInt32, Int32*)
at ReportPro3_Designer.Functions$DrawFormattedText$.MyExtTextOut(Void*, Int32, Int32, UInt32, VO._winRECT*, Void*, Int32, Int32*)
at ReportPro3_Designer.Functions$DrawFormattedText$._DFTTabbedTextOut(Classmate.cHDC, ReportPro3.DrawFormattedTextStruct*, Int32, Int32)
at ReportPro3_Designer.Functions$DrawFormattedText$._DFTPrintText(Classmate.cHDC, ReportPro3.DrawFormattedTextStruct*)
at ReportPro3_Designer.Functions.DrawFormattedText(Classmate.cHDC, ReportPro3.DrawFormattedTextStruct*)
at ReportPro3.rpField.Print(ReportPro3.rpPrinter, Int32, Int32, Int32, Boolean, System.String)
at ReportPro3.rpSection.PrintBand(ReportPro3.rpBand, Boolean)
at ReportPro3.rpSection.PrintPageBody(Classmate.cPrinter)
at ReportPro3.rpReport.PrintPageBody()
at Classmate.cPrinter._PrintPage()
at Classmate.cPrinter._PrintDoc()
at Classmate.cPrinter._PrintStart()
at Classmate.cPrintMsgDialog.OnTimer(Classmate.cEvent)
at Classmate.cWindow.Dispatch(Classmate.cEvent)
at Classmate.cBaseDialog.Dispatch(Classmate.cEvent)
at Classmate_Gui.Functions._cDialogProc(Void*, UInt32, UInt32, Int32)
at VOWin32APILibrary.Functions.IsDialogMessage(Void*, VO._winMSG*)
at Classmate.cWindow._PreProcessMessage(VO._winMSG*)
at Classmate.cDialog._ModalExec()
at Classmate.cDialog.Show(Int32)
at Classmate.cPrintMsgDialog.Show(Int32)
at Classmate.cPrinter.Print()
at ReportPro3.rpReport.Print()
at ReportPro3.rpDesigner.Menu_Print()
Exception Info: System.Reflection.TargetInvocationException
at System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.Reflection.MethodInfo, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.String, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.DoSend(System.Object, System.String, XSharp.__Usual[], System.String)
at XSharp.RT.Functions.Send(XSharp.__Usual, XSharp.__Usual, XSharp.__Usual[])
at Classmate.cMenu._ProcessCommandMsg(Classmate.cEvent)
at Classmate.cToolbar._ProcessCommandMsg(Classmate.cEvent)
at Classmate.cWindow.OnCommand(Classmate.cEvent)
at ReportPro3.rpDesigner.OnCommand(Classmate.cEvent)
at Classmate.cWindow.Dispatch(Classmate.cEvent)
at Classmate.cMDIChild.Dispatch(Classmate.cEvent)
at Classmate_Gui.Functions._cMDIChildProc(Void*, UInt32, UInt32, Int32)
at VOWin32APILibrary.Functions.DispatchMessage(VO._winMSG*)
at Classmate.cApp.Exec()
at ReportPro3.cAppEx.Start()
Exception Info: System.Reflection.TargetInvocationException
at System.RuntimeMethodHandle.InvokeMethod(System.Object, System.Object[], System.Signature, Boolean)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(System.Object, System.Object[], System.Object[])
at System.Reflection.RuntimeMethodInfo.Invoke(System.Object, System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo)
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.Reflection.MethodInfo, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.String, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.DoSend(System.Object, System.String, XSharp.__Usual[], System.String)
at XSharp.RT.Functions.Send(XSharp.__Usual, XSharp.__Usual, XSharp.__Usual[])
at Classmate_Gui.Functions.CmStart(XSharp.__Symbol)
at ReportPro3.Exe.Functions.Start()
This exception occurs when the report is already rendered and sent to print, and it happens randomly usually on pages above 10 around 70-90% of the time even with the most simple reports with just one field in the body.
We're not sure what is going on since we stumbled upon this problem only last week. We've tried it on 3 different PCs and the problem occurs on all of them.
ReportPro 3.60 for XSharp 2.60 memory exception
- Michal Rajnoha
- Posts: 23
- Joined: Wed Sep 29, 2021 6:57 am
Re: ReportPro 3.60 for XSharp 2.60 memory exception
Hi Michal,
Is it possible to reproduce the problem in a small standalone app? If yes, can you please send it together with all needed files (rpt, dbfs etc) to have a look?
Is it possible to reproduce the problem in a small standalone app? If yes, can you please send it together with all needed files (rpt, dbfs etc) to have a look?
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
- Michal Rajnoha
- Posts: 23
- Joined: Wed Sep 29, 2021 6:57 am
Re: ReportPro 3.60 for XSharp 2.60 memory exception
I managed to reproduce it inside ReportPro3 itself.
I've created an SQL table with a single integer column and populated the table with at least 1000 rows.
Then I created a new report (A4 format, metric system, portrait/landscape doesn't matter) and added a single field inside the body with binding to the SQL column.
Now when I enter the print menu ("Print the report" button or "File -> Print"), set a printer and press "OK", it starts the process of printing, showing sent page count. Then it randomly may crash on any given page with the aforementioned exception.
Note that this happens with both physical and virtual printers.
I've created an SQL table with a single integer column and populated the table with at least 1000 rows.
Then I created a new report (A4 format, metric system, portrait/landscape doesn't matter) and added a single field inside the body with binding to the SQL column.
Now when I enter the print menu ("Print the report" button or "File -> Print"), set a printer and press "OK", it starts the process of printing, showing sent page count. Then it randomly may crash on any given page with the aforementioned exception.
Note that this happens with both physical and virtual printers.
Re: ReportPro 3.60 for XSharp 2.60 memory exception
Hi Michal,
Is that only with SQL tables? Can you please check if you get the same also with dbfs?
Is that only with SQL tables? Can you please check if you get the same also with dbfs?
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
- Michal Rajnoha
- Posts: 23
- Joined: Wed Sep 29, 2021 6:57 am
Re: ReportPro 3.60 for XSharp 2.60 memory exception
Back when we started with ReportPro3 X#, we never managed to make it run with DBFs. Trying to add a DBF section ends with following exception:
Application: ReportPro3.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: XSharp.Error
at XSharp.RDD.RddError.PostArgumentError(System.String, UInt32, System.String, UInt32, System.Object[])
at XSharp.CoreDb+<>c__DisplayClass113_0.<UseArea>b__0()
at XSharp.CoreDb.Do[[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func`1<Boolean>)
at XSharp.CoreDb.UseArea(Boolean, System.String, System.String, System.String, Boolean, Boolean)
at ReportPro3_Rdd.Functions.OpenRDDTable(Boolean, System.String, System.String, System.String, Boolean, Boolean, Boolean)
at ReportPro3_Rdd.Functions.OpenRDDTableValid(Classmate.cWindow, System.String, System.String)
at ReportPro3.rpRDDTable+<>c__DisplayClass79_0.<SelectSource>b__0(XSharp.__Usual, XSharp.__Usual)
at <>f__AnonymousType3.Eval(XSharp.__Usual[])
at XSharp.RT.Functions.Eval(XSharp.ICodeblock, XSharp.__Usual[])
at XSharp.RT.Functions.Eval(XSharp.__Usual, XSharp.__Usual[])
at ReportPro3.rpOpenTableDlg.OnNotify(Classmate.cControlNotifyEvent)
at Classmate.cWindow.Dispatch(Classmate.cEvent)
at Classmate.cBaseDialog.Dispatch(Classmate.cEvent)
at Classmate_Gui.Functions._CommonFileDlgProc(Void*, UInt32, UInt32, Int32)
at VOWin32APILibrary.Functions.GetOpenFileName(VO._WINOPENFILENAME*)
at Classmate.cOpenFileDialog.Show(Int32)
at ReportPro3.rpRDDTable.SelectSource(Classmate.cWindow, System.String, System.String, System.String, XSharp.__Array)
at ReportPro3.rpDataSource.AddTable(Classmate.cWindow, System.String, ReportPro3.rpRDDTable, XSharp.__Array)
at ReportPro3.rpDataSource.Menu_AddTable(XSharp.__Usual[])
Exception Info: XSharp.Error
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.Reflection.MethodInfo, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.String, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.DoSend(System.Object, System.String, XSharp.__Usual[], System.String)
at XSharp.RT.Functions.Send(XSharp.__Usual, XSharp.__Usual, XSharp.__Usual[])
at ReportPro3.rpSectionCfgDlg.Menu_Select(XSharp.__Usual[])
Exception Info: XSharp.Error
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.Reflection.MethodInfo, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.String, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.DoSend(System.Object, System.String, XSharp.__Usual[], System.String)
at XSharp.RT.Functions.Send(XSharp.__Usual, XSharp.__Usual, XSharp.__Usual[])
at Classmate.cMenu._ProcessCommandMsg(Classmate.cEvent)
at Classmate.cPopupMenu.ShowAsPopup(Classmate.cWindow, Classmate.cPoint)
at ReportPro3.rpSectionCfgDlg.OnContextMenu(Classmate.cEvent)
at Classmate.cWindow.Dispatch(Classmate.cEvent)
at Classmate.cBaseDialog.Dispatch(Classmate.cEvent)
at Classmate_Gui.Functions._cDialogProc(Void*, UInt32, UInt32, Int32)
Since we were already drifting away from using DBFs, we didn't bother and just went straight to SQL tables.
Application: ReportPro3.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: XSharp.Error
at XSharp.RDD.RddError.PostArgumentError(System.String, UInt32, System.String, UInt32, System.Object[])
at XSharp.CoreDb+<>c__DisplayClass113_0.<UseArea>b__0()
at XSharp.CoreDb.Do[[System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func`1<Boolean>)
at XSharp.CoreDb.UseArea(Boolean, System.String, System.String, System.String, Boolean, Boolean)
at ReportPro3_Rdd.Functions.OpenRDDTable(Boolean, System.String, System.String, System.String, Boolean, Boolean, Boolean)
at ReportPro3_Rdd.Functions.OpenRDDTableValid(Classmate.cWindow, System.String, System.String)
at ReportPro3.rpRDDTable+<>c__DisplayClass79_0.<SelectSource>b__0(XSharp.__Usual, XSharp.__Usual)
at <>f__AnonymousType3.Eval(XSharp.__Usual[])
at XSharp.RT.Functions.Eval(XSharp.ICodeblock, XSharp.__Usual[])
at XSharp.RT.Functions.Eval(XSharp.__Usual, XSharp.__Usual[])
at ReportPro3.rpOpenTableDlg.OnNotify(Classmate.cControlNotifyEvent)
at Classmate.cWindow.Dispatch(Classmate.cEvent)
at Classmate.cBaseDialog.Dispatch(Classmate.cEvent)
at Classmate_Gui.Functions._CommonFileDlgProc(Void*, UInt32, UInt32, Int32)
at VOWin32APILibrary.Functions.GetOpenFileName(VO._WINOPENFILENAME*)
at Classmate.cOpenFileDialog.Show(Int32)
at ReportPro3.rpRDDTable.SelectSource(Classmate.cWindow, System.String, System.String, System.String, XSharp.__Array)
at ReportPro3.rpDataSource.AddTable(Classmate.cWindow, System.String, ReportPro3.rpRDDTable, XSharp.__Array)
at ReportPro3.rpDataSource.Menu_AddTable(XSharp.__Usual[])
Exception Info: XSharp.Error
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.Reflection.MethodInfo, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.String, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.DoSend(System.Object, System.String, XSharp.__Usual[], System.String)
at XSharp.RT.Functions.Send(XSharp.__Usual, XSharp.__Usual, XSharp.__Usual[])
at ReportPro3.rpSectionCfgDlg.Menu_Select(XSharp.__Usual[])
Exception Info: XSharp.Error
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.Reflection.MethodInfo, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.SendHelper(System.Object, System.String, XSharp.__Usual[], XSharp.__Usual ByRef)
at XSharp.RT.OOPHelpers.DoSend(System.Object, System.String, XSharp.__Usual[], System.String)
at XSharp.RT.Functions.Send(XSharp.__Usual, XSharp.__Usual, XSharp.__Usual[])
at Classmate.cMenu._ProcessCommandMsg(Classmate.cEvent)
at Classmate.cPopupMenu.ShowAsPopup(Classmate.cWindow, Classmate.cPoint)
at ReportPro3.rpSectionCfgDlg.OnContextMenu(Classmate.cEvent)
at Classmate.cWindow.Dispatch(Classmate.cEvent)
at Classmate.cBaseDialog.Dispatch(Classmate.cEvent)
at Classmate_Gui.Functions._cDialogProc(Void*, UInt32, UInt32, Int32)
Since we were already drifting away from using DBFs, we didn't bother and just went straight to SQL tables.
Re: ReportPro 3.60 for XSharp 2.60 memory exception
Michal,
Which exact RP3 version are you using?
Which exact RP3 version are you using?
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
- Michal Rajnoha
- Posts: 23
- Joined: Wed Sep 29, 2021 6:57 am
Re: ReportPro 3.60 for XSharp 2.60 memory exception
It's this one: ReportPro 3.60 for XSharp 2.60
Now I'm thinking, our X# version is 2.13, so we should be using ReportPro 3.54 for XSharp 2.10?
If that's the case, then there is a different exception it gives at start:
Application: ReportPro3.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileLoadException
at ReportPro3.Exe.Functions.Start()
I guess it may be looking for X# runtime, but even if I copy it into the ReportPro3 folder, it still throws the same exception, while 3.60 starts normally even without the X# runtime being in the same folder.
Now I'm thinking, our X# version is 2.13, so we should be using ReportPro 3.54 for XSharp 2.10?
If that's the case, then there is a different exception it gives at start:
Application: ReportPro3.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileLoadException
at ReportPro3.Exe.Functions.Start()
I guess it may be looking for X# runtime, but even if I copy it into the ReportPro3 folder, it still throws the same exception, while 3.60 starts normally even without the X# runtime being in the same folder.
Re: ReportPro 3.60 for XSharp 2.60 memory exception
Hi Michal,
Those RP3 errors seem very strange to me, can't explain them easily, maybe there's some kind of dll hell. In any case, X# 2.13 is very old, released almost 2 years ago I think, so it's much better to install a newer version. Not sure if this will fix the problems, but it's quite possible. Using RP3.6 is fine.
Those RP3 errors seem very strange to me, can't explain them easily, maybe there's some kind of dll hell. In any case, X# 2.13 is very old, released almost 2 years ago I think, so it's much better to install a newer version. Not sure if this will fix the problems, but it's quite possible. Using RP3.6 is fine.
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
- Michal Rajnoha
- Posts: 23
- Joined: Wed Sep 29, 2021 6:57 am
Re: ReportPro 3.60 for XSharp 2.60 memory exception
Upgraded to X# 2.18, new findings:
- I managed to make ReportPro3 run with DBFs - we simply tried to push a CDX dbf into a report which expected MDX, so that's on us.
- The exception happens regardless of what type of data source is used.
- The exception happens when printing directly from ReportPro3 itself.
- The exception doesn't ever happen when the application is run in Debug mode in XIDE, but it does when run in Release or directly.
Attached samples for testing.
- I managed to make ReportPro3 run with DBFs - we simply tried to push a CDX dbf into a report which expected MDX, so that's on us.
- The exception happens regardless of what type of data source is used.
- The exception happens when printing directly from ReportPro3 itself.
- The exception doesn't ever happen when the application is run in Debug mode in XIDE, but it does when run in Release or directly.
Attached samples for testing.
- Attachments
-
- RP3Test.zip
- sample report
- (3.94 KiB) Downloaded 95 times
-
- RP3PrintTest.zip
- sample application
- (23.17 KiB) Downloaded 97 times
Re: ReportPro 3.60 for XSharp 2.60 memory exception
Hi Michal,
Thanks for the very good sample, but unfortunately I could not reproduce the problem here, all 65 pages are always printed ok here. Does the problem happen with any printer driver? Even when selecting a pdf driver, like PDF creator or Microsoft's print to pdf driver from Windows? To be honest that's what I used as well, wanted to avoid wasting 65 pages of paper..
Thanks for the very good sample, but unfortunately I could not reproduce the problem here, all 65 pages are always printed ok here. Does the problem happen with any printer driver? Even when selecting a pdf driver, like PDF creator or Microsoft's print to pdf driver from Windows? To be honest that's what I used as well, wanted to avoid wasting 65 pages of paper..
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu