PR# 12065 Creating narrow window via docking causes estudio crash or hang
Problem Report Summary
Submitter: prestoat2000
Category: EiffelStudio
Priority: Medium
Date: 2007/02/14
Class: Bug
Severity: Serious
Number: 12065
Release: 6.0.66595
Confidential: No
Status: Closed
Responsible: larryl
Environment: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.8.1) Gecko/20061228 Firefox/2.0
Solaris 10 on x64
Synopsis: Creating narrow window via docking causes estudio crash or hang
Description
Start estudio and open existing project. Close all window, leaving only a single Editor tab. Open one window (via View/Tools menu) and dock it across bottom of main development window. Open a second window via same menu and move it into left half of first window, so that there are two windows side by side across bottom of main development window. Continue opening windows via View/Tools menu and dock one in left half of smallest window across bottom, so that are more and more windows spread horizontally side-by-side across bottom of main development window. Pretty soon, estudio goes into either infinite regression (eats more and more memory) or keeps redrawing repeatedly and window system is hung. Presumably, the problem is caused by too many very narrow windows trying to share limited space.
To Reproduce
Problem Report Interactions
I believe this is now fixed. I can't reproduce a crash with very narrow windows any longer. If I do find another case, I will report it as a new bug. Closing report.
This may now possibly be fixed. Previously, the call to enable_user_resize made by Studio allowed the window size to be set to smaller than the minimum size of its children, now the Window is constrained by its children's size so hopefully the bug can no longer be reproduced.
I am still able to get get estudio to use more and more memory by making very narrow windows, in rev 69383. Reopening report.
This bug is fixed in revision#69361. Thanks for your report.
Still goes into infinite recursion with build 66895 (I'm guessing - can't get a trace but it keeps using more and more memory. Killed it when it got to 500 MB). Here is a sequence that always reproduces the problem for me on Solaris 10 x64, using JDS. Contents of .gtkrc-2.0 file is gtk-font-name="Arial 18" Display is 1280 by 1024. You might have to mimic this setup exactly to see the problem, or it may just require setting font and display size to match the above. Delete ~/.es directory. Create basic (nongraphical) application. Click on "X" for Features window to close it. Click on "X"' for Clusters window to close it. Undock Output tool and put it in left half of window across bottom of main tool. Undock Diagram and put in left half of Output window. Undock class and put in left half of Diagram. Undock Feature Relation and put in left half of Class. Undock Dependency and put in left half of Feature Relation. Undock Metrics and put in left half of Dependency. Undock External Output a .... Output truncated, Click download to get the full message
I have tried make main development window to narrowest width. Attached very_narrow.png shows it works fine, and normal_size.png shows what's it looks like when maximized. It works fine on Ubuntu 64bits. My Eiffel Studio is build from SVN revision 66888. Maybe this bug is fixed by other bugs fixing. Could you try newer Linux Eiffel Studio to see if this bug still happen? Thank you.
I think the critical part that I omitted is that the main development window must be made fairly narrow, either before starting the process of docking a number of tools side by side or after. For example, I just now tried docking about 5 tools side-by-side at bottom of the main development window. No problem occurred. CPU and memory were normal and the ec process seemed to be inactive. Then I resized the main development window to make it very narrow and estudio started redrawing over and over and using more and more memory.
I don't have problem after I doing it follow your steps. See from the snapshot, the CPU and Memory I think is normal after I docked all tools under View/Tool menu. Have I did something wrong? Thanks.