Rea-Sixty v0.5.1
Rea-Sixty v0.5.1, "HOTFIX"
v0.5.0 stopped REAPER from starting on Windows. This release fixes that, and nothing else. The extension asked Windows for more working memory at startup than a program's main thread is given, so Windows killed the process while the extension was still loading. REAPER never opened, which also meant ReaPack was out of reach and the extension could not be removed from inside the app. macOS and Linux were never affected, because they give a program roughly eight times more of that memory, and the same build ran fine there all along. Sorry to anyone this caught.
If REAPER will not start right now
You cannot install this update from inside REAPER, because REAPER does not open. Move one file first, then update normally.
- Press Windows key and R together.
- Paste
%APPDATA%\REAPER\UserPluginsand press Enter. - Rename
reaper_rea-sixty.dlltoreaper_rea-sixty.dll.OFF.
REAPER starts again now, without Rea-Sixty. Update through ReaPack as usual, restart REAPER, then delete the .OFF file you made. Or skip ReaPack and drop the reaper_rea-sixty.dll from this release straight into that folder, replacing the old one.
On a portable REAPER install the folder is UserPlugins next to reaper.exe instead. If Windows hides the .dll part of the name, switch on File name extensions under View, Show in Explorer first.
The full version of this, with the checks for whether it really was this bug, is in docs/v0.5.0-windows-recovery.md.
Install via ReaPack (recommended)
Under Extensions, ReaPack, Manage repositories, Import/export, Import repositories. Paste:
https://github.com/acklin83/reaper-scripts/raw/main/index.xml
Then Browse packages, Rea-Sixty, Install. Restart REAPER. Add the surface under Preferences, Control/OSC/Web, Add, Rea-Sixty.
First-run setup buttons live under Settings, About:
- Windows: "Install UF8/UC1 WinUSB driver" (UAC prompt)
- Linux: "Install Linux udev rule" (pkexec prompt)
- macOS: nothing extra
What's new
Windows: REAPER starts again
One line in the settings loader built a fresh copy of the whole configuration on the stack, the small scratch area Windows caps at one megabyte for a program's main thread. That copy had quietly grown to a little over one megabyte on its own, because the UF1 work in v0.5.0 added fields to every button binding and the configuration holds several thousand of them. Windows checks the whole request before the function runs its first instruction, found it did not fit, and ended the process. Nothing in the extension's own error handling ever got a chance to run, which is why REAPER died in silence rather than showing a message.
The copy now lives in ordinary memory instead of on the stack, which is where it always belonged. The same crash was fixed once before, in May, for the same reason in the same file. That fix covered every variable holding a configuration and missed the one that was a temporary value, and back then it still fit anyway.
So that there is no third time, the build now refuses to compile if any function reserves more than 256 KB of stack. The largest one left in the extension uses 149 KB.
This was reported on the forum first, and confirmed on a Windows machine here: three crashes, all with Windows error code 0xc00000fd, all at the same instruction inside the memory check.
Known issues
Same as v0.5.0.
Manual install
If ReaPack isn't an option:
- macOS:
rea-sixty-mac-v0.5.1.zip, unzip the three.dylibfiles into~/Library/Application Support/REAPER/UserPlugins/. - Windows:
rea-sixty-win-v0.5.1.zip, unzip the three.dllfiles into%APPDATA%\REAPER\UserPlugins\. Run the WinUSB driver installer from Settings, About on first launch. - Linux:
rea-sixty-linux-v0.5.1.tar.gz, unpack all three files (reaper_rea-sixty.so,libusb-1.0.so.0,libhidapi-hidraw.so.0) into~/.config/REAPER/UserPlugins/, keeping them together. Apply the bundled99-rea-sixty.rulesudev rule, or use the in-app button. No separate dependency install needed.
The Stream Deck Companion plugin (com.reasixty.companion.streamDeckPlugin) is attached to this release separately, it is not part of the ReaPack package.