Exception on application exit calling SeriesCount
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Hi Yeray,
I found some conditions that seem very reproducible:
- open the HRM130415.csv
- activate the query (7th icon from the left)
- position the mouse pointer over some of the chart bars to get feedback
- turn off the query (click 7th icon again)
- Open the MAI.csv... it will crash at the Assign(AFont) statement in TTeeCanvas.AssignFont() method.
This same crash will occur if switching back and forth between MAI and WetSide at least twice or by reading MAI twice or by reading MAI then HRM130415.
Another crash (no stack trace) occurs when doing the following:
- open HRM130415.csv twice
or
- open HRM130415.csv
- open WetSidexxx.csv
- open HRM130415.csv again (repeat back and forth between the two files at least once or until crash occurs)
Let me know if you can reproduce any of these conditions.
I cannot find a way to reproduce the marker related issue using this example application, but it happens all the time in my actual application.
Thanks,
Kent
I found some conditions that seem very reproducible:
- open the HRM130415.csv
- activate the query (7th icon from the left)
- position the mouse pointer over some of the chart bars to get feedback
- turn off the query (click 7th icon again)
- Open the MAI.csv... it will crash at the Assign(AFont) statement in TTeeCanvas.AssignFont() method.
This same crash will occur if switching back and forth between MAI and WetSide at least twice or by reading MAI twice or by reading MAI then HRM130415.
Another crash (no stack trace) occurs when doing the following:
- open HRM130415.csv twice
or
- open HRM130415.csv
- open WetSidexxx.csv
- open HRM130415.csv again (repeat back and forth between the two files at least once or until crash occurs)
Let me know if you can reproduce any of these conditions.
I cannot find a way to reproduce the marker related issue using this example application, but it happens all the time in my actual application.
Thanks,
Kent
Re: Exception on application exit calling SeriesCount
Hi,
We've made some more tests, now in two different machines.
I failed 4 times to open the "Browse" dialog. I experience the crash mentioned above very often with this application in my machine, with Delphi 2009.
However, in another machine (Narcís' machine) the same application seems to be more stable, still with Delphi 2009. And he even could reproduce the error in AssignFont.
I then tried with XE3 and I could reproduce the problem with it. But not in a stable way, very occasionally and this is still too big to be debugged. Please, I know it's complicate, but we can't do much more with an application of this dimension. So, could you please strip the project to the minimum code necessary to reproduce the issue here?
Note we had to add the line below to load the files. Otherwise we got no series loaded as mentioned here and here.
We've made some more tests, now in two different machines.
I failed 4 times to open the "Browse" dialog. I experience the crash mentioned above very often with this application in my machine, with Delphi 2009.
However, in another machine (Narcís' machine) the same application seems to be more stable, still with Delphi 2009. And he even could reproduce the error in AssignFont.
I then tried with XE3 and I could reproduce the problem with it. But not in a stable way, very occasionally and this is still too big to be debugged. Please, I know it's complicate, but we can't do much more with an application of this dimension. So, could you please strip the project to the minimum code necessary to reproduce the issue here?
Note we had to add the line below to load the files. Otherwise we got no series loaded as mentioned here and here.
Code: Select all
DecimalSeparator:='.'; //FormatSettings.DecimalSeparator in XE3
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Hi Yeray,
I spent the day trimming the application down. I uploaded TeeChartDemo3.zip. I am still able to reproduce the AssignFont error by first loading the HRM130415.csv, and the loading the MAI.csv. I have removed the functionality to load WetSide...csv, so don't try to load it. It is probably possible to cause many other kinds of crashes by trying to exercise UI functionality that is no longer supported in the code.
I hope this is minimal enough to aid in your investigation.
Thanks,
Kent
I spent the day trimming the application down. I uploaded TeeChartDemo3.zip. I am still able to reproduce the AssignFont error by first loading the HRM130415.csv, and the loading the MAI.csv. I have removed the functionality to load WetSide...csv, so don't try to load it. It is probably possible to cause many other kinds of crashes by trying to exercise UI functionality that is no longer supported in the code.
I hope this is minimal enough to aid in your investigation.
Thanks,
Kent
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Yeray,
I forgot to mention in my previous posting that I did not understand where the code change was required that you mentioned at the end of your post. You will probably have to make that change again.
Kent
I forgot to mention in my previous posting that I did not understand where the code change was required that you mentioned at the end of your post. You will probably have to make that change again.
Kent
Re: Exception on application exit calling SeriesCount
Hi Kent,
I've removed FormChartDeviceInfo from the uses clause in FormChartTimeSeries.pas, had to remove the ButtonNotepad declaration, 14 references to TFormDeviceInfo class, and FormChartNotepad from the uses clause in DemoMain.pas. Then it compiles, but all the classes are still being used.
When we ask for a simple example project, it's a form, a TChart on that form and a few lines of code. It uses to be the creation of a series, in your case maybe the import/read of the data in the csv file, and sometimes a few lines to modify some chart or series properties to create the environment where the dysfunction can be appreciated. The project you sent is hard for us to be debugged as it includes too many non-teechart related classes and code. Please try to arrange the minimal project necessary to reproduce the issue discusses here.
Code: Select all
[DCC Fatal Error] FormChartTimeSeries.pas(17): F1026 File not found: 'FormChartDeviceInfo.dcu'
When we ask for a simple example project, it's a form, a TChart on that form and a few lines of code. It uses to be the creation of a series, in your case maybe the import/read of the data in the csv file, and sometimes a few lines to modify some chart or series properties to create the environment where the dysfunction can be appreciated. The project you sent is hard for us to be debugged as it includes too many non-teechart related classes and code. Please try to arrange the minimal project necessary to reproduce the issue discusses here.
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Hi Yeray,
I don't think it will be possible to produce the demonstration code that you are asking for. I tried to reduce the code like you asked, but I just end up with a broken application that does nothing. Since I do not know what is causing the problem, I cannot just start from scratch and build a trivial application with a few lines of code that demonstrates the problem.
Here is what I did to simplify the code:
I cleaned up the problems you identified. I also commented out quite a lot of code. Although the file handling/parsing code is still there, it is no longer called. I have hard-coded the data filling in a new ReadChartData() method.
Each time you press the Browse button, it initializes a different chart from the hard-coded data and displays the chart. I am using the comboboxDateTime control to decide whether to advance to the next chart or repeat the same chart (MDY advances, anything else does not). Depending on what sequence the charts are generated, I get different errors.
The way it is set up right now, you will get a crash at AssignFont(AFont) at line 4437 of TeCanvas the second time you click the Browse button.
If you swap the lines in ButtonImportClick() where PIV and SSI are assigned to FDefaultPath, then the behavior will be very different and it will crash somewhere else after cycling through the charts several times. It will also crash when shutting down the application.
I also analyzed my code with Pascal Analyzer 6, but it did not find any problems.
I'm sorry I cannot find a simpler way to reproduce this problem, but perhaps this is now simple enough to investigate. I uploaded a new version in TeeChartDemo4.zip.
Thanks for your help,
Kent
I don't think it will be possible to produce the demonstration code that you are asking for. I tried to reduce the code like you asked, but I just end up with a broken application that does nothing. Since I do not know what is causing the problem, I cannot just start from scratch and build a trivial application with a few lines of code that demonstrates the problem.
Here is what I did to simplify the code:
I cleaned up the problems you identified. I also commented out quite a lot of code. Although the file handling/parsing code is still there, it is no longer called. I have hard-coded the data filling in a new ReadChartData() method.
Each time you press the Browse button, it initializes a different chart from the hard-coded data and displays the chart. I am using the comboboxDateTime control to decide whether to advance to the next chart or repeat the same chart (MDY advances, anything else does not). Depending on what sequence the charts are generated, I get different errors.
The way it is set up right now, you will get a crash at AssignFont(AFont) at line 4437 of TeCanvas the second time you click the Browse button.
If you swap the lines in ButtonImportClick() where PIV and SSI are assigned to FDefaultPath, then the behavior will be very different and it will crash somewhere else after cycling through the charts several times. It will also crash when shutting down the application.
I also analyzed my code with Pascal Analyzer 6, but it did not find any problems.
I'm sorry I cannot find a simpler way to reproduce this problem, but perhaps this is now simple enough to investigate. I uploaded a new version in TeeChartDemo4.zip.
Thanks for your help,
Kent
Re: Exception on application exit calling SeriesCount
Hi Kent,
I've spent about two hours removing unused methods and components in your project and the problem seems to be still reproducible as it was.
I've basically put breakpoints to all the methods in FormChartTimeSeries.pas. Then I've executed and followed the steps until reproduce the problem, removing the breakpoints where the application stopped. Then, I removed all the methods where there's still a breakpoint. With this, FormChartTimeSeries.pas reduced from 4932 lines to 1985.
Still too big to easily debug it.
I've spent about two hours removing unused methods and components in your project and the problem seems to be still reproducible as it was.
I've basically put breakpoints to all the methods in FormChartTimeSeries.pas. Then I've executed and followed the steps until reproduce the problem, removing the breakpoints where the application stopped. Then, I removed all the methods where there's still a breakpoint. With this, FormChartTimeSeries.pas reduced from 4932 lines to 1985.
Still too big to easily debug it.
- Attachments
-
- TeeChartDemo.zip
- (901.14 KiB) Downloaded 682 times
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Hi Yeray,
I have tried to eliminate a little more code, but now it crashes while constructing the first chart. My development environment removed the TChart object from the dfm file, so I had to add the TChart at runtime. I don't know if this is causing the crash or not. The crash I get has something to do with markers I think, so maybe it is helpful.
This effort to reduce the code seems to be a two edge sword. The code is smaller, but the application changes so much that it may no longer be possible to reproduce the original problem and we end up chasing something else entirely that may just be a result of removing something critical.
I will go back to the application you sent to me and try to remove different code without any impact on the resource file to see if I can get anywhere that way. In the meantime, you can take a look at this revision to see if this crash is telling you anything.
Thanks,
Kent
I have tried to eliminate a little more code, but now it crashes while constructing the first chart. My development environment removed the TChart object from the dfm file, so I had to add the TChart at runtime. I don't know if this is causing the crash or not. The crash I get has something to do with markers I think, so maybe it is helpful.
This effort to reduce the code seems to be a two edge sword. The code is smaller, but the application changes so much that it may no longer be possible to reproduce the original problem and we end up chasing something else entirely that may just be a result of removing something critical.
I will go back to the application you sent to me and try to remove different code without any impact on the resource file to see if I can get anywhere that way. In the meantime, you can take a look at this revision to see if this crash is telling you anything.
Thanks,
Kent
- Attachments
-
- TeeChartDemo.zip
- revised app
- (396.74 KiB) Downloaded 669 times
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Hi Yeray,
I went back to your previous version and reduced the content of FormChartTimeSeries.pas to about 1000 lines. It cycles through 3 charts and then crashes. It also crashes on exit.
If you change the comboboxDateTime control occasionally, then behavior is different and crash is in a different place.
Hope we are getting close to a debuggable size.
Thanks,
Kent
I went back to your previous version and reduced the content of FormChartTimeSeries.pas to about 1000 lines. It cycles through 3 charts and then crashes. It also crashes on exit.
If you change the comboboxDateTime control occasionally, then behavior is different and crash is in a different place.
Hope we are getting close to a debuggable size.
Thanks,
Kent
- Attachments
-
- TeeChartDemo.zip
- reduced application
- (498.05 KiB) Downloaded 687 times
Re: Exception on application exit calling SeriesCount
Hi,
I'm afraid none of the last attached applications compile fine for me here.
I'm afraid none of the last attached applications compile fine for me here.
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Hi Yeray,
Can you give me an example of a compile error you are having? I cleaned my project and rebuilt and I don't get any fatal compile errors.
Just these:
[DCC Warning] TeePro912.dpk(240): W1033 Unit 'TeeLinearGaugeEditor' implicitly imported into package 'TeePro912'
[DCC Hint] FormChartTimeSeries.pas(90): H2219 Private symbol 'BarSeries' declared but never used
[DCC Hint] FormChartTimeSeries.pas(91): H2219 Private symbol 'PointSeries' declared but never used
Thanks,
Kent
Can you give me an example of a compile error you are having? I cleaned my project and rebuilt and I don't get any fatal compile errors.
Just these:
[DCC Warning] TeePro912.dpk(240): W1033 Unit 'TeeLinearGaugeEditor' implicitly imported into package 'TeePro912'
[DCC Hint] FormChartTimeSeries.pas(90): H2219 Private symbol 'BarSeries' declared but never used
[DCC Hint] FormChartTimeSeries.pas(91): H2219 Private symbol 'PointSeries' declared but never used
Thanks,
Kent
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Hi Yeray,
I realize that this is an annoying issue, but I need to get to the root cause. Maybe it is a problem in my code, but the exception continues to occur in TeeChart code.
If I am unable to resolve it, my company will very likely drop the TeeChart component and switch to DevExpress because this crash is causing our customers to complain. I hope you can spend a little more time helping me get to the root cause.
Thanks,
Kent
I realize that this is an annoying issue, but I need to get to the root cause. Maybe it is a problem in my code, but the exception continues to occur in TeeChart code.
If I am unable to resolve it, my company will very likely drop the TeeChart component and switch to DevExpress because this crash is causing our customers to complain. I hope you can spend a little more time helping me get to the root cause.
Thanks,
Kent
-
- Site Admin
- Posts: 14730
- Joined: Mon Jun 09, 2003 4:00 am
- Location: Banyoles, Catalonia
- Contact:
Re: Exception on application exit calling SeriesCount
Hello Kent,
Thanks in advance.
Sure, and we could reproduce it here. It is not an annoying issue, the problem is that your project is quite complex and we ended up spending too much time trying to figure out everything instead on focusing on TeeChart and the real issue. We would be very grateful if you collaborated trying to create a new simple project from scratch with the minimum code recreating the issue in this big project. My recommendation would be to make it as simple as possible avoiding all the sophistication and code that probably has nothing to do with the problem. If we can get to that point we will be glad to investigate the issue.kent_myers wrote: I realize that this is an annoying issue, but I need to get to the root cause. Maybe it is a problem in my code, but the exception continues to occur in TeeChart code.
Thanks in advance.
Best Regards,
Narcís Calvet / Development & Support Steema Software Avinguda Montilivi 33, 17003 Girona, Catalonia Tel: 34 972 218 797 http://www.steema.com |
Instructions - How to post in this forum |
-
- Newbie
- Posts: 23
- Joined: Wed Feb 13, 2013 12:00 am
Re: Exception on application exit calling SeriesCount
Narcis,
I wrote a simple application that generates line, bar and polar charts one after the other when pushing a button, similar to my previous demo application, but of course it does not fail.
Since I have no idea what the source of the problem might be, beyond this basic chararacteristic of sequential charting, I think there is no way I am going to reproduce the problem starting from scratch.
Yeray said he was unable to compile my last attempt to reduce the original application, but he did not tell me what the problems were that he was having so that I could try to address them. The last reduced application was down to less than 1000 lines of code in the primary file (including comments). The app that I started from scratch is about 250 lines, so based on line count the difference in complexity is not that much.
If you will not investigate my reduced application that fails and I cannot think of a way to reproduce the problem starting from scratch, then I think we are at a deadlock.
I hope you will take another look.
Kent
I wrote a simple application that generates line, bar and polar charts one after the other when pushing a button, similar to my previous demo application, but of course it does not fail.
Since I have no idea what the source of the problem might be, beyond this basic chararacteristic of sequential charting, I think there is no way I am going to reproduce the problem starting from scratch.
Yeray said he was unable to compile my last attempt to reduce the original application, but he did not tell me what the problems were that he was having so that I could try to address them. The last reduced application was down to less than 1000 lines of code in the primary file (including comments). The app that I started from scratch is about 250 lines, so based on line count the difference in complexity is not that much.
If you will not investigate my reduced application that fails and I cannot think of a way to reproduce the problem starting from scratch, then I think we are at a deadlock.
I hope you will take another look.
Kent
- Attachments
-
- NewChartDemo.zip
- app from scratch
- (33.67 KiB) Downloaded 659 times
Re: Exception on application exit calling SeriesCount
Hi,
TForm1.FormCreate calls TfrmChartTimeSeries.Create, defined at FormChartTimeSeries.pas (1090 lines)
TfrmChartTimeSeries.Create calls TTimeSeriesChartHRM.Create, defined at ClassTimeSeriesChartHRM.pas (686 lines)
TTimeSeriesChartHRM.Create calls TTimeSeriesChart.Create, defined at ClassTimeSeriesChart (1096 lines)
TTimeSeriesChart.Create calls TTimeSeriesDataTable.Create, defined at ClassTimeSeries (2989 lines)
You are not just creating a TChart, changing a few properties from it, loading some data and observing an undesired behaviour. You are customizing/extending the component so much that we can't be responsible of it.
The application here gives me this error:kent_myers wrote:Yeray said he was unable to compile my last attempt to reduce the original application, but he did not tell me what the problems were that he was having so that I could try to address them.
I've given another try. After removing the *.dcu, I can build the application without errors.[DCC Fatal Error] FormChartTimeseries.pas(17): F2051 Unit TeeLinearGaugeEditor was compiled with a different version of TeeLinearGauge.TCustomGaugeMinMax
That's right for the primary file, but what about the others?kent_myers wrote:The last reduced application was down to less than 1000 lines of code in the primary file (including comments). The app that I started from scratch is about 250 lines, so based on line count the difference in complexity is not that much.
TForm1.FormCreate calls TfrmChartTimeSeries.Create, defined at FormChartTimeSeries.pas (1090 lines)
TfrmChartTimeSeries.Create calls TTimeSeriesChartHRM.Create, defined at ClassTimeSeriesChartHRM.pas (686 lines)
TTimeSeriesChartHRM.Create calls TTimeSeriesChart.Create, defined at ClassTimeSeriesChart (1096 lines)
TTimeSeriesChart.Create calls TTimeSeriesDataTable.Create, defined at ClassTimeSeries (2989 lines)
You are not just creating a TChart, changing a few properties from it, loading some data and observing an undesired behaviour. You are customizing/extending the component so much that we can't be responsible of it.
Best Regards,
Yeray Alonso Development & Support Steema Software Av. Montilivi 33, 17003 Girona, Catalonia (SP) | |
Please read our Bug Fixing Policy |