Hi Jack, Maybe you might be able to help solve this problem. It is rather difficult and I think the easiest solution is to blacklist GUI tests from running on Mac OS X. However despite the segfaults, I find the tests useful to make sure all is well in the GUI on a Mac. The problem is either a bug in wxPython, well really wxWidgets, or a design flaw in Mac OS X. From what I've read, it sounds more like a Mac design flaw. This was previously a problem on MS Windows, but I have solved it for that OS in relax 3.3.6 (http://wiki.nmr-relax.com/Relax_3.3.6). All operating systems have a hard limit for the number of GUI objects that can be created (windows, panels, buttons, etc.). In MS Windows, this is called "User Objects" and there the limit is 10,000, and "GDI Object" which has the same limit. In Mac systems, I'm not sure what the equivalent are called. In Linux, the limits are so high that we'll never encountered the problem. In relax these limits are reached due to the design of the GUI, specifically the user function windows. If all the user function windows are open simultaneously, then the Windows and Mac limits are reached and Python errors or segfaults are seen respectively. The current design is that after closing a user function window, it remains in memory so that when you reopen it, all its settings and values from the previous execution are still there. This is very useful for repetitive operations such as loading peak list data. But when running the test suite, as the user function windows remain permanently open, the hard GUI limits are reached in both Windows and Macs. This problem has only recently surfaced as the number of GUI tests have expanded and more of the user functions are executed. In the future as the GUI tests expand even more, this will become more and more of a problem. The solution in relax 3.3.6 was to destroy all user function windows at the end of each GUI test (see http://www.nmr-relax.com/api/3.3/test_suite.gui_tests.base_classes-pysrc.html#GuiTestCase.tearDown and http://www.nmr-relax.com/api/3.3/gui.spin_viewer.frame-pysrc.html#Spin_view_window.Destroy for this design). This frees the User Objects and GDI Objects in MS Windows. However this is were the Mac OS X design flaw hurts. In the Mac, the system will not release the GUI objects until the program terminates! So despite the window Destroy() function calls, the limit will be reached and a segfault will occur. I have desperately searched for a solution for this for Mac systems, but have found none. It sounds like the wxWidget people blame the Mac OS design flaw. Maybe in the future, wxWidgets will find a workaround that can then be used in relax. But until then, we are pretty much bound to have segfaults in Mac systems in the GUI tests. I really have not idea what we can do to solve this issue! Regards, Edward On 14 March 2015 at 22:35, Jack Howarth <NO-REPLY.INVALID-ADDRESS@xxxxxxx> wrote:
Follow-up Comment #1, bug #23389 (project relax): This failure also appears in 3.3.6 with 'relax --test-suite'. Oddly it doesn't occur with 'relax --gui-tests'. _______________________________________________________ Reply to this item at: <http://gna.org/bugs/?23389> _______________________________________________ Message sent via/by Gna! http://gna.org/ _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list relax-devel@xxxxxxx To unsubscribe from this list, get a password reminder, or change your subscription options, visit the list information page at https://mail.gna.org/listinfo/relax-devel