Skip to content

Tags: AcademySoftwareFoundation/OpenRV

Tags

v4.0.2

Toggle v4.0.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: crashpad_handler corrupted by install-time strip on Rocky Linux 8 (

#1381)

## Problem

Packaged Linux Release builds shipped an **unloadable**
`bin/crashpad_handler`, so RV printed this at every launch on Rocky
Linux 8:

```
ERROR: Failed to start Crashpad handler
ERROR: Failed to initialize crash handler
```

The shipped binary cannot be executed at all — it fails with exit 127 —
so `CrashpadClient::StartHandler()` fails and no crash dumps are ever
captured.

## Root cause

`after_copy_platform()` in `cmake/install/pre_install_linux.cmake` ran a
bare `strip -S` on every installed ELF. On binaries whose layout makes
GNU strip emit

```
warning: allocated section `.dynstr' not in segment
```

strip relocates `.dynstr` to the end of the file but leaves its virtual
address unchanged, so no `PT_LOAD` covers it any more:

| | `.dynstr` addr | file offset | first `LOAD` filesz |
|---|---|---|---|
| healthy | `0x3ff5b0` | `0x0005b0` ✅ | `0x1000` |
| as shipped | `0x3ff5b0` | `0x0ce5b0` ❌ | `0x5b0` |

At runtime `0x3ff5b0` maps from file offset `0x5b0`, which is now all
zeros, so every library/symbol/version name reads as an empty string.
**strip exits 0 while doing this**, which is why the existing
`RESULT_VARIABLE` check could not catch it.

`crashpad_handler` is exposed because
`cmake/dependencies/crashpad.cmake` runs `patchelf --set-rpath` on it.
patchelf has no `DT_RUNPATH` to overwrite, so it grows `.dynstr` and
inserts a new RW `PT_LOAD` below the image base, leaving `.dynstr`
straddling a segment boundary. The pristine pre-patchelf binary is well
formed. It is the only patchelf'd binary in `bin/`, which is why the
neighbouring Breakpad tools strip fine.

## Fix

Use the existing `cmake/scripts/strip_debug_safe.sh` guard instead of a
bare `strip -S`, exactly as `cmake/macros/rv_stage.cmake` already does
for RV's own targets. It strips to a temp copy and only replaces the
original when strip is warning- and error-free.

The mime-type ignore list could not be used: `crashpad_handler` is plain
`application/x-executable` like every other RV binary.

## Verification

Root cause proven three ways:

1. `strip -S` on a known-good handler reproduces a byte-identical
corruption signature and turns exit 0 into exit 127.
2. Moving `.dynstr` back to offset `0x5b0` in the shipped binary — a
single ELF field edit, nothing else — makes it work again.
3. End to end: the shipped build prints both errors and captures 0
dumps; with a repaired handler it prints `INFO: Crash handler
initialized successfully` and captures a real 589664-byte minidump.

## Blast radius

Linux only, Release installs only, no runtime/C++ changes. Measured over
the full staged tree (803 strip candidates):

- **796** strip cleanly and are **byte-identical** to the previous
in-place `strip -S` output (md5-verified sample including `rv.bin`,
`libQt6Core.so.6`, `dump_syms`)
- **2** real ELFs now left unstripped: `bin/crashpad_handler` and
`PySide6/lupdate` — both were shipping corrupted
- **5** non-ELF files already failed and were already left untouched;
outcome unchanged

Net package size impact is **-26712 bytes** — "stripping" those two
binaries was *growing* them. Normal stripping is unaffected (`dump_syms`
9596480 -> 453976, matching the shipped size). File modes are preserved
(`755`, `644`, `664` all verified) and the step is idempotent.

## Platform note

Only Rocky 8 was affected in the field. Rocky 9's strip leaves both
binaries alone instead of mis-writing them, so its packages were already
healthy — confirmed with same-version, same-day Rocky 8 and Rocky 9
artifacts (Rocky 8: 2 corrupted files; Rocky 9: 0). Rocky 9 has
therefore been shipping these two binaries unstripped all along; this
change makes Rocky 8 consistent with that rather than changing Rocky 9.

Because the guard always exits 0, genuine strip failures would have been
downgraded from `WARNING` to `STATUS`. The known-benign `.dynstr not in
segment` skip is reported at `STATUS` and everything else stays at
`WARNING`. `CMAKE_MATCH_1` is saved beforehand, since the added
`MATCHES` would otherwise clobber the mime type in that warning message.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Signed-off-by: Bernard Laberge <bernard.laberge@autodesk.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>

v4.0.1

Toggle v4.0.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
docs: Set VFX platform badge to 2025 in README.md (#1357)

### docs: Set VFX platform badge to 2025 in README.md

### Linked issues

NA

### Summarize your change.

Update VFX platform badge from 2024 to 2025 in README.md

### Describe the reason for the change.

The current README.md's VFX platform badge (2024) was not representating
the default VFX platform of the main branch (2025)

### Describe what you have tested and on which operating system.

Successfully tested on macOS

### Add a list of changes, and note any that might need special
attention during the review.

### If possible, provide screenshots.

Before:
<img width="228" height="140" alt="before"
src="https://github.com/user-attachments/assets/34ea5404-fc1d-4a4c-98e7-0e55363e42f9"
/>

After:
<img width="224" height="139" alt="after"
src="https://github.com/user-attachments/assets/82aaf565-4658-451b-a2ee-031de0c44866"
/>

Signed-off-by: Bernard Laberge <bernard.laberge@autodesk.com>

v4.0.0

Toggle v4.0.0's commit message
Release OpenRV v4.0.0

v3.2.0

Toggle v3.2.0's commit message
Release 3.2.0, VFX2024+VFX2023 are working. The main branch becomes V…

…FX2025+VFX2024

v3.1.0

Toggle v3.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
SG-42039 Revert recent mmr fix (#1121)

### SG-42039 Revert recent mmr fix

### Linked issues
NA

### Summarize your change.
Reverting this recent multiple media representation fix since it might
be causing crashes during a clearSession() (because sourcesAtFrame()
might be evaluated during this clearSession()).

The multiple media representation fix was cosmetic anyhow in a Live
Review RV-RV with Screening Room scenario:
after loading a new version via Screening Room, the participants'
multiple media representation UI at the bottom right
of the RV player was not being updated because this event was not taken
into consideration.

### Describe the reason for the change.

Random crashes occured in OTIO RV Automated tests 

### Describe what you have tested and on which operating system.
successfully tested on macOS

### Add a list of changes, and note any that might need special
attention during the review.

### If possible, provide screenshots.

Signed-off-by: Bernard Laberge <bernard.laberge@autodesk.com>

v3.0.0

Toggle v3.0.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Fix drop region for High-DPI displays (#889) (#890)

### 889: Fix drop region for High-DPI displays

### Linked issues
Fixes #889

### Describe the reason for the change.
Could not add new content sources via drag and drop when a source is
already loaded on High-DPI displays

### Summarize your change.
Now taking devicePixelRatio (High-DPI display) into account in
drawDropRegions() mu method.

### Describe what you have tested and on which operating system.
Successfully tested on macOS

### Add a list of changes, and note any that might need special
attention during the review.

### If possible, provide screenshots.

Signed-off-by: Bernard Laberge <bernard.laberge@autodesk.com>

v2.0.1

Toggle v2.0.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Upgrading python3.cmake to 3.10.13 (#373)

### Linked issues
n/a

### Summarize your change.
Upgrading python version from 3.10.12 to 3.10.12

### Describe the reason for the change.
Upgrade

### Describe what you have tested and on which operating system.
Rocky 8

### Add a list of changes, and note any that might need special
attention during the review.
n/a

### If possible, provide screenshots.
n/a

Signed-off-by: Cédrik Fuoco <cedrik.fuoco@autodesk.com>
Co-authored-by: Kerby Geffrard <kerby.geffrard@autodesk.com>

v2.0.0

Toggle v2.0.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Set OpenRV to 2.0.0 (2024) (#380)

Signed-off-by: Kerby Geffrard <kerby.geffrard@autodesk.com>

v1.0.0

Toggle v1.0.0's commit message
Autodesk's Open RV original contribution