PR# 19257 [er] Incremental compilation is not stable

Problem Report Summary
Submitter: axarosenberg
Category: Compiler
Priority: Medium
Date: 2016/07/19
Class: Bug
Severity: Serious
Number: 19257
Release: 16.05.9.8969
Confidential: No
Status: Analyzed
Responsible: alexk_es
Environment: Windows 64 bit
Synopsis: [er] Incremental compilation is not stable

Description
It's the second time this week that a project that I compiled in workbench mode is crashing with a runtime panic error after an incremental compilation.
When that happens, EiffelStudio becomes unresponsive. I have to kill it.
It happened on two different projects, which were initially compiled last week. So EiffelStudio was exited last week and relaunched this week.
Restarting EiffelStudio does not solve the problem. Freezing does not solve the problem either. I have to recompile from scratch to solve the problem.

--
Eric Bezault
To Reproduce

										
Problem Report Interactions
From:manus_eiffel    Date:2016/07/29    Status: Analyzed    Download   
That is correct, we are still working on it.

From:axarosenberg    Date:2016/07/29    Status: Analyzed    Download   
I just got the same problem with 16.05.9.9057. Is it expected?

--
Eric Bezault

From:manus_eiffel    Date:2016/07/23    Status: Analyzed    Download   
Add eweasel test#inr433

From:manus_eiffel    Date:2016/07/20    Status: Analyzed    Download   
Thanks for the sample. We were able to reproduce the issue. It had to do with the redefinition of `last_string` in KL_STDIN_FILE before the change. That redefinition was not necessary but nonetheless after the changes the inheritance to CONSOLE is removed and a `last_string` attribute is still there confuses the compiler. We will reproduce this on a smaller example and look at a fix.

From:manus_eiffel    Date:2016/07/20    Status: Analyzed    Download   
Thanks for the sample. We were able to reproduce the issue. It had to do with the redefinition of `last_string` in KL_STDIN_FILE before the change. That redefinition was not necessary but nonetheless after the changes the inheritance to CONSOLE is removed and a `last_string` attribute is still there confuses the compiler. We will reproduce this on a smaller example and look at a fix.

From:axarosenberg    Date:2016/07/20    Status: Analyzed    Download   
Here is how to reproduce the problem:

1) Get the code from https://github.com/ebezault/gobo.git
2) Check-out commit 1e817842b8596389b9575c41fc7b3cd2b655f178 
3) Run the bootstrap in $GOBO\work\bootstrap
4) Compile the project in $GOBO\src\gec with EiffelStudio using ise.ecf
5) Check-out commit 2db1d95fc61bf03f9fb1a03c8110a263e41f3b2f 
6) Recompile from EiffelStudio
7) Execute from EiffelStudio with the command-line argument: ge.xace

Contrary to the initial bug report, there is no "runtime panic", but a "segmentation violation" in FILE.make_with_name when executing the line which creates `last_string'.

--
Eric Bezault

From:axarosenberg    Date:2016/07/19    Status: Analyzed    Download   
Yes, EiffelStudio becoming unresponsive is a side effect of debugging because the application is crashing. However it stays unresponsive forever. The Task Manager says "Not responding".

I managed to reproduce the problem. I occurs with:

16.05.9.8969  vs14 and vs12
16.05.9.8814  vs14
15.08.9.7862  vs12

So this bug is not new. So it's not so critical for us.
Before sending you our W_code, I'll try to reproduce it with a program which does not contain proprietary code.

--
Eric Bezault

From:manus_eiffel    Date:2016/07/19    Status: Analyzed    Download   
Is EiffelStudio becoming unresponsive a side effect of debugging because the application is crashing? If so, it should take about 60 seconds before it realizes that the application has died.

On the application front, would it be possible for you to follow the instructions at https://dev.eiffel.com/Debug_generated_C_code and attach a C debugger to the application to see where exactly it is crashing?

Also could you preserve the W_code folder when it is crashing and send it to us along with the new one (stripped of object files) so that we can see the differences? It might not be that easy for us to find the reason of the crash if there has been a lot of changes but it could help.