drracket icon indicating copy to clipboard operation
drracket copied to clipboard

Unstable (crashing) on macOS 14.0 Public Beta (23A5301h)

Open bainco opened this issue 2 years ago • 1 comments

What version of Racket are you using? 8.10.0.3--2023-08-01(ff7f0493df/a) (also unstable performance on 8.9)

What program did you run? Sample RKT File from DrRacket

What should have happened? No crash!

If you got an error message, please include it here. For this particular crash I:

  1. Opened DrRacket via double clicking the .app
  2. Opened the above sample RKT via File > Open
  3. Attempted to run the sample RKT macOS Crash Report

Please include any other relevant details

  • macOS 14.0 (23A5301h) - Public Beta (ARM) (runs fine on macOS 13.5 virtual machine)

Crash condition is rather inconsistent. I observed crashes while:

  • Occasionally crashing right on open without any action
  • Clicking the RUN button very quickly multiple times (from default open state – i.e. no open RKT file)
  • Opening a longer RKT file
  • Opening a short RKT file and running it more than once
  • On several occasions, instead of a crash I would see DrRacket use upwards of 80GBs of memory and would eventually trigger a macOS OOM error

bainco avatar Aug 03 '23 19:08 bainco

Thanks for the report! I've tracked this down to an issue with version of the Cairo drawing library that DrRacket uses.

If it's useful to you to patch your installation, you can download https://users.cs.utah.edu/~mflatt/tmp/libcairo.2.dylib as a replacement for the version that is included in a distribution. After downloading, you'll need to use the command line xattr -d com.apple.quarantine libcairo.2.dylib to remove the quarantine attribute on the file. After removing that attribute, you can mover libcairo.2.dylib into the lib folder of your Racket installation to replace the one that's there.

I don't know whether there's time to get this repair into Racket v8.10, but I'll start the conversation with the release managers.

mflatt avatar Aug 07 '23 18:08 mflatt