@@ -230,26 +230,25 @@ no output for the scenario.
230230
231231---
232232
233- ## L10. OLR Crash on RAC LOB + Log Switch
233+ ## L10. ~~ OLR Crash on RAC LOB + Log Switch~~ (FIXED)
234234
235- OLR crashes with a null pointer dereference in ` Reader.cpp:111 ` when
236- processing heavy LOB operations spanning multiple log switches on RAC.
235+ ** Root cause:** ` Ctx::getMemoryChunk() ` returned ` nullptr ` during
236+ ` hardShutdown ` (OOM condition), but 7 of 9 callers never checked for null.
237+ Under tight memory + heavy LOB redo, the parser consumed all available chunks,
238+ the reader's allocation failed silently, and the subsequent dereference
239+ crashed.
237240
238- ** Evidence — test output (2026-03-16):**
241+ ** Fix:** Changed ` getMemoryChunk() ` to throw ` RuntimeException(10018) ` instead
242+ of returning ` nullptr ` on hard shutdown. This is consistent with the existing
243+ throw at line 489-490 (post-allocation shutdown check). Removed the one
244+ now-unreachable null check in ` MemoryManager::unswap() ` .
239245
240- ```
241- Reader.cpp:111:21: runtime error: load of null pointer of type 'uint8_t'
242- ```
243-
244- Occurs when advancing to a new archive log sequence on thread 2 during
245- ` rac-lob-log-switch ` scenario (40 LOB inserts + 10 updates + 10 deletes
246- across both nodes).
246+ ** Validated:** Reproduced 10/10 on RAC VM with 32-64MB memory + LOB DML from
247+ both nodes. After fix, OLR shuts down gracefully with error 10018 instead of
248+ crashing.
247249
248250** Tracked:** [ rophy/olr #14 ] ( https://github.com/rophy/olr/issues/14 )
249251
250- ** Test handling:** ` rac-lob-log-switch ` scenario cannot be used until bug is
251- fixed.
252-
253252---
254253
255254## L11. OLR Does Not Support Invisible Columns
@@ -305,6 +304,6 @@ applies at DB creation, not pre-built).
305304| ----| ------------| -------| ---------------|
306305| L8 | ROWID column (type# 69) not decoded | [ #15 ] ( https://github.com/rophy/olr/issues/15 ) | ` rowid-column ` |
307306| L9 | IOT not discovered in metadata | [ #16 ] ( https://github.com/rophy/olr/issues/16 ) | ` iot-table ` |
308- | L10 | RAC LOB + log switch null pointer crash | [ #14 ] ( https://github.com/rophy/olr/issues/14 ) | ` rac-lob-log-switch ` |
307+ | ~~ L10~~ | ~~ RAC LOB + log switch null pointer crash~~ (FIXED) | [ #14 ] ( https://github.com/rophy/olr/issues/14 ) | — |
309308| L11 | Invisible columns not tracked | — | — |
310309| L12 | US7ASCII charset corruption | [ #2 ] ( https://github.com/rophy/olr/issues/2 ) | ` multibyte-passthrough ` (@TAG ) |
0 commit comments