GollyGang / ready

A cross-platform implementation of various reaction-diffusion systems and PDEs.
GNU General Public License v3.0
779 stars 60 forks source link

App v0.11.0 crashes OSX 10.11.6 #134

Closed schroef closed 3 years ago

schroef commented 3 years ago

OSX 10.11.6 Ready 0.11.0

Crashes immediately on start

When trying to open the app on OSX 10.11.6, the app crashes immediately. I have tried the app since 0.80 honestly, so not sure where in between the updates it stopped working on OSX.

Attached crash-log i copied crash-read-1448-03022021.log

timhutton commented 3 years ago

Hi @schroef - Could you download the 0.10.1 release and try that, just to give us a point of comparison? https://github.com/GollyGang/ready/releases/download/0.10.1/Ready-0.10.1-Mac.dmg

I don't use macOS but I'm hoping our resident expert @andykt can help debug the situation.

schroef commented 3 years ago

Sure, will do and report back

schroef commented 3 years ago

No luck and no crash window. I did use console to find the crash report. ALso get this window when i restart it again but nothing shows, whereas with 0.11.0 i do get a crash window.

Ill try release 0.9.0 as i dont see a 0.10.0 for OSX. See if that works.

Screen Shot 2021-02-03 at 18 25 15

schroef commented 3 years ago

Okay v0.9.0 also crashes iv added another report for that. So for me on OSX 10.11.6 only v0.8.0 works

crash-ready-090-1833-03022021.log

andykt commented 3 years ago

On Thu, Feb 4, 2021 at 5:59 AM schroef notifications@github.com wrote:

When trying to open the app on OSX 10.11.6, the app crashes immediately. ...

Thanks for including the crash log. It looks like one of the libs in Ready (built on 10.15.6) is using a call that's not available on 10.11.6. I suspect it's something to do with Boost because although I've been careful to build the VTK, wxMac and Ready code with macosx-version-min=10.10 I completely forgot about Boost which I installed some time ago via "brew install boost". So I suspect I'll have to build the Boost libs from source and specify the same macosx-version-min setting.

To help verify this, can you please download the dmg files from the following locations and check that both apps start up ok on your 10.11.6 system:

https://sourceforge.net/projects/glu1/files/glu-0.2/ https://sourceforge.net/projects/ag1/files/ag-1.4/

If I'm wrong about Boost being the culprit then it will probably be a lot quicker to get Ready working on your system by building it from source. It's really not that hard (assuming you have the Xcode tools and cmake installed). Just download Ready's source code and follow the macOS instructions at the bottom of BUILD.txt.

Question for Tim: How much of Ready's code relies on Boost? If only a small amount then any chance we could remove that dependency?

Andrew

andykt commented 3 years ago

@schroef: Please download this build of Ready:

http://www.trevorrow.com/ready/Ready-0.11.1-Mac.dmg

I think Ready.app should run ok on your 10.11 system. It turns out the problem was in the way I was building VTK (more details later if the above build is ok).

The Boost lib is only used by rdy (the command line version of Ready). There is still a problem with the way we build rdy that needs to be fixed, so I'm pretty sure it will fail if you try to run rdy in Terminal.app. Again, more details if I can figure out how to solve this problem.

andykt commented 3 years ago

@schroef: Please try this new build of Ready:

http://www.trevorrow.com/ready/Ready-0.11.2-Mac.dmg

Ready.app hasn't changed (so should hopefully still work!) but there is a new build of rdy that might work on your system. Open Terminal.app and try running a command like this:

./rdy -i Patterns/oregonator.vti -n 5 -k

schroef commented 3 years ago

I'll test 0.11.2 okay or do you wt me to test 0.11.1 as well?

schroef commented 3 years ago

0.11.2 seems to work, i did notice the top window frame. The toolbar's background is black, looks a bit strange.

Here's a comparison 0.8.0 vs 0.11.2 Ready-v080 Ready-v0112

andykt commented 3 years ago

No need to test 0.11.1. Good to see that 0.11.2 works, except for the toolbar background glitches. No idea what might be causing those -- probably a wxAUI bug that only shows up on a 10.11 system for some reason. Looks a bit like a Dark mode issue but I'm pretty sure that option is only available in Mojave (10.14) or later. Tim, any idea?

@schroef: Did you also test rdy? If not, please open Terminal.app (in Applications/Utilities) and run these commands:

cd path/to/rdy ./rdy -i Patterns/oregonator.vti -n 5 -k

timhutton commented 3 years ago

No idea Andrew. Which version of wxWidgets was it compiled with? Worth trying a different one?

timhutton commented 3 years ago

Andrew, can we update the build instructions with what we've learnt?

There was a warning in the macOS build about the min versions: https://travis-ci.com/github/GollyGang/ready/jobs/480164758#L200

andykt commented 3 years ago

I have to use the latest development version of wxMac (3.1.5 from git) to build Ready. There is a serious bug in the stable (!) 3.1.4 release that causes Ready to crash on start up, and I can't use any older version of wxMac on my 10.15 system due to other start up bugs! wxMac development is a bit of a mess at the moment, mainly because macOS is a fast moving target and Apple don't give a stuff about supporting backward compatibility.

Those min version warnings can be safely ignored but I'll try to see if I can avoid them. I suspect it involves using -DCMAKE_OSX_DEPLOYMENT_TARGET="10.10" in the cmake command rather than specifying -mmacosx-version-min=10.10 in CMakeLists.txt. (That's actually what I had to do to ensure VTK is built for 10.10.)

Once rdy is confirmed to work on 10.11.6 I'll commit my changes.

andykt commented 3 years ago

Ok, I've been optimistic and assumed rdy will work, so I've committed my changes to BUILD.txt and CMakeLists.txt.

Note that the Boost lib used by rdy has to be statically linked (like on Windows) if we want to distribute it to other Mac users, so this means I can't just do "brew install boost". Building the Boost libs is a bit painful and I'm seeing weird warnings when linking rdy, but hopefully they can be ignored because I can't figure out how to avoid them.

Any chance we can remove the dependency on Boost? It looks like we only use it to parse program options in rdy, which seems like overkill to me. I don't really see the point of supporting all those lengthy options like --print-kernel when I bet everybody just uses the short -k version.

andykt commented 3 years ago

@schroef: Please try Ready.app in this latest build:

http://www.trevorrow.com/ready/Ready-0.11.3-Mac.dmg

I've made a couple of changes that might fix those black toolbar backgrounds. (And please don't forget to test rdy.)

timhutton commented 3 years ago

@andykt I'd be very happy to get rid of Boost. boost::program_options was added to parse the command-line arguments in rdy. There must be a tiny library we can use instead - maybe this one, a single header file library, MIT-licensed: https://github.com/jarro2783/cxxopts

schroef commented 3 years ago

@andykt i could check properly, my finder crashed and needed to do restart but was after work. I used terminal to start, but nothing showed. Then checke console and saw this message each time i tried running it

2/5/21 14:47:02.763 CoreServicesUIAgent[2225]: Error -60005 creating authorization
2/5/21 14:48:32.297 CoreServicesUIAgent[2225]: could not send Apple Event: -600

these to popup each time after i tried in Terminal. Ill test better again on Monday, i did had the time to restart and wait for it. Im sorry, the machine is terrible slow after restart, after that its okay

open ready-o.11.3-mac
schroef commented 3 years ago

hahah never mind, it was a folder. It actually runs fine and the black bg in the toolbar is gone. I do see it in the panel headers PS i noticed the startup file is less vibrant vs the current one. Is that a change in software or just different settings vs those of 0.8.0

v0.11.3 Screen Shot 2021-02-05 at 14 52 05

v.0.8.0 Ready-v080

timhutton commented 3 years ago

@schroef Yes, the default color palette has changed. Change colormap to HSV blend in the Render Settings to get the old appearance back.

image

andykt commented 3 years ago

@schroef: You still haven't told me if rdy works. I just need to know if it crashes or not, so please open Terminal.app and run these commands:

cd path/to/Ready-0.11.3-Mac (ie. the folder containing rdy, Ready.app, Patterns, etc) ./rdy -i Patterns/oregonator.vti -n 5 -k

schroef commented 3 years ago

@andykt sorry could not make it today to test that as well. I'll try it Monday okay. My Macs at home are all broken

andykt commented 3 years ago

@schroef: No problem. When you can, please try this latest build:

http://www.trevorrow.com/ready/Ready-0.11.4-Mac.dmg

I'm pretty sure it fixes all the black backgrounds, and even more certain rdy will work (as it no longer uses any Boost code).

@timhutton: I think we should replace the existing 0.11.0 macOS build in the release with this new 0.11.4 build ASAP. Or would you rather create a completely new 0.12.0 release?

timhutton commented 3 years ago

@andykt Let's try this:

It's a bit mix-and-match but I think it works for these tiny fix releases which are quite common.

In future let's refer to versions generally as e.g. 0.12, and allow the third value (e.g. the 7 in 0.12.7) to be whatever we end up with after bugfixing, with no need for it to match across platforms.

andykt commented 3 years ago

@timhutton: Agreed on all points. 0.11.4 dmg has been released.

schroef commented 3 years ago

@schroef: You still haven't told me if rdy works. I just need to know if it crashes or not, so please open Terminal.app and run these commands:

cd path/to/Ready-0.11.4-Mac (ie. the folder containing rdy, Ready.app, Patterns, etc) ./rdy -i Patterns/oregonator.vti -n 5 -k

Sorry for the later reply. I tried the syntax using terminal but i wont run, see below I tried this with 0.11.3 but is same

its looking for this 'vtkXMLGenericDataObjectReader", i dont see i anywhere in this project. Its also not in the source folder. I see it should be included, its from an external lib VTK. I saw something in the BUILD.txt file

Mac-Pro:~ macpro1$ /Applications/Ready-0.11.4-Mac/rdy -i Patterns/oregonator.vti -n 5 -k
ERROR: In /Users/akt/HD/VTK-8.2.0/IO/XML/vtkXMLGenericDataObjectReader.cxx, line 149
vtkXMLGenericDataObjectReader (0x7fa693500a80): could not load Patterns/oregonator.vti

Error creating system!:
Unsupported data type or file read error
Mac-Pro:~ macpro1$ 

i tried without ./rdy but get the same error then.

I also tried version 0.11.4 looks better, it still looks a bit different compared to 0.8.0 Mainly the panel edge or outline color compare-0114-080

timhutton commented 3 years ago

The error is from here: https://github.com/GollyGang/ready/blob/9419d576faa49e7d508a0106e82adbeb2e09d799/src/readybase/SystemFactory.cpp#L88

I get that error on Windows if the file doesn't exist:

C:\Tim\Ready-git\build_vs2019_x64_staticCRT\Release>rdy -i ..\Patterns\CPU-only\grayscfott_1D.vti -n 5 -k
2021-02-10 16:31:43.391 (   0.535s) [                ]vtkXMLGenericDataObject:147    ERR| vtkXMLGenericDataObjectReader (0000012E7596F9B0): could not load ..\Patterns\CPU-only\grayscfott_1D.vti
Error creating system!:
Unsupported data type or file read error

I should detect that situation and give a better message.

Can you check the path to Patterns/oregonator.vti?

schroef commented 3 years ago

what do you mean check the path? The file is in that folder, it doesnt seem to understand the path to the file, thats why i also tried with ./rdy. But i guess this i normal syntax using it like that.

PS should that path be

Mac-Pro:~ macpro1$ /Applications/Ready-0.11.4-Mac/rdy -i /Patterns/oregonator.vti -n 5 -k

So with an forward slash before Pattern

timhutton commented 3 years ago

Hi @schroef, Sorry, I just meant something like:

ls

so that we can see if there is a Patterns folder in the current folder. I'm guessing that there isn't and that you need either:

/Applications/Ready-0.11.4-Mac/rdy -i /Applications/Ready-0.11.4-Mac/Patterns/oregonator.vti -n 5 -k

or:

cd /Applications/Ready-0.11.4-Mac
./rdy -i ./Patterns/oregonator.vti -n 5 -k
schroef commented 3 years ago

I had linked an image, the is a folder with this file. I gueess the upload didnt went properly Screen Shot 2021-02-10 at 13 44 53

ac-Pro:Patterns macpro1$ ls
Agmon2014               Ginzburg-Landau             Kytta2007               Purwins1999             Yang2003                oregonator.vti
Brusselator.vti             GrayScott1984               LotkaVolterra1926           RosenzweigMacArthur1963         Yang2006                parameter_modulation_demo.vti
CPU-only                Guo2014                 Maginu1975              Schlogl.vti             advection.vti               parameter_modulation_demo2.vti
CellularAutomata            Kobayashi1993               McCabe2010              Schrodinger1926             bilaplacian_interpolation.vti       parameter_modulation_demo2_3D.vti
Experiments             KortewegDeVries1895         Meinhardt1982               SmoothLife2011              heat_equation.vti           wave_equation.vti
FitzHugh-Nagumo             Kryuchkov2020               Morozov2008             Turing1952              heat_equation_interpolation.vti     wave_soliton.vti
Froese2014              KuramotoSivashinsky1978         Pennybacker2013             Yang2002                kernel_test.vti
Mac-Pro:Patterns macpro1$ 
schroef commented 3 years ago

I ran the test using the path you showed and did get a return So i guess terminal version works right


Kernel source:
================================
kernel void rd_compute(global float4 *a_in,global float4 *b_in,global float4 *a_out,global float4 *b_out)
{
    // parameters:
    const float4 timestep = 0.00010000f;
    const float4 D_a = 1.00000000f;
    const float4 D_b = 0.60000002f;
    const float4 epsilon = 0.01000000f;
    const float4 f = 1.39999998f;
    const float4 q = 0.00200000f;
    const float4 dx = 0.20000000f;

    // indices:
    const int index_x = get_global_id(0);
    const int index_y = get_global_id(1);
    const int index_z = get_global_id(2);
    const int X = get_global_size(0);
    const int Y = get_global_size(1);
    const int Z = get_global_size(2);
    const int index_here = X*(Y*index_z + index_y) + index_x;
    float4 a = a_in[index_here];
    float4 b = b_in[index_here];

    // cells needed:
    const float4 a_sw4 = a_in[X* (Y * index_z + min(Y-1, max(0, index_y-1))) + min(X-1, max(0, index_x-1))];
    const float4 b_sw4 = b_in[X* (Y * index_z + min(Y-1, max(0, index_y-1))) + min(X-1, max(0, index_x-1))];
    const float4 a_w4 = a_in[X* (Y * index_z + index_y) + min(X-1, max(0, index_x-1))];
    const float4 b_w4 = b_in[X* (Y * index_z + index_y) + min(X-1, max(0, index_x-1))];
    const float4 a_nw4 = a_in[X* (Y * index_z + min(Y-1, max(0, index_y+1))) + min(X-1, max(0, index_x-1))];
    const float4 b_nw4 = b_in[X* (Y * index_z + min(Y-1, max(0, index_y+1))) + min(X-1, max(0, index_x-1))];
    const float4 a_s = a_in[X* (Y * index_z + min(Y-1, max(0, index_y-1))) + index_x];
    const float4 b_s = b_in[X* (Y * index_z + min(Y-1, max(0, index_y-1))) + index_x];
    const float4 a_n = a_in[X* (Y * index_z + min(Y-1, max(0, index_y+1))) + index_x];
    const float4 b_n = b_in[X* (Y * index_z + min(Y-1, max(0, index_y+1))) + index_x];
    const float4 a_se4 = a_in[X* (Y * index_z + min(Y-1, max(0, index_y-1))) + min(X-1, max(0, index_x+1))];
    const float4 b_se4 = b_in[X* (Y * index_z + min(Y-1, max(0, index_y-1))) + min(X-1, max(0, index_x+1))];
    const float4 a_e4 = a_in[X* (Y * index_z + index_y) + min(X-1, max(0, index_x+1))];
    const float4 b_e4 = b_in[X* (Y * index_z + index_y) + min(X-1, max(0, index_x+1))];
    const float4 a_ne4 = a_in[X* (Y * index_z + min(Y-1, max(0, index_y+1))) + min(X-1, max(0, index_x+1))];
    const float4 b_ne4 = b_in[X* (Y * index_z + min(Y-1, max(0, index_y+1))) + min(X-1, max(0, index_x+1))];
    const float4 a_sw = (float4)(a_sw4.w, a_s.xyz);
    const float4 b_sw = (float4)(b_sw4.w, b_s.xyz);
    const float4 a_w = (float4)(a_w4.w, a.xyz);
    const float4 b_w = (float4)(b_w4.w, b.xyz);
    const float4 a_nw = (float4)(a_nw4.w, a_n.xyz);
    const float4 b_nw = (float4)(b_nw4.w, b_n.xyz);
    const float4 a_se = (float4)(a_s.yzw, a_se4.x);
    const float4 b_se = (float4)(b_s.yzw, b_se4.x);
    const float4 a_e = (float4)(a.yzw, a_e4.x);
    const float4 b_e = (float4)(b.yzw, b_e4.x);
    const float4 a_ne = (float4)(a_n.yzw, a_ne4.x);
    const float4 b_ne = (float4)(b_n.yzw, b_ne4.x);

    // keywords needed:
    const float4 laplacian_a = (-20 * a + a_nw + a_ne + a_sw + a_se + 4 * (a_n + a_w + a_e + a_s)) / (6 * dx * dx);
    const float4 laplacian_b = (-20 * b + b_nw + b_ne + b_sw + b_se + 4 * (b_n + b_w + b_e + b_s)) / (6 * dx * dx);
    float4 delta_a = 0.0f;
    float4 delta_b = 0.0f;

    // the formula:
    delta_a = D_a*laplacian_a + (a - a*a - f*b*(a-q)/(a+q)) / epsilon;
    delta_b = D_b*laplacian_b + a - b;

    // forward-Euler update step:
    a_out[index_here] = a + timestep * delta_a;
    b_out[index_here] = b + timestep * delta_b;
}
================================
Run the simulation for 5 steps...
Output file not specified, not saving anything.
Mac-Pro:~ macpro1$