Skip to content

test: verify #632 segfault fixed by nlp-engine #658 (engine 3.5.6) - #31

Merged
ddehilster merged 1 commit into
mainfrom
test/verify-632-reentrancy-fix
Jun 17, 2026
Merged

ddehilster merged 1 commit into
mainfrom
test/verify-632-reentrancy-fix

Conversation

@ddehilster

Copy link
Copy Markdown
Member

Verifies that nlp-engine #658 (re-entrant analyze() orphaning/segfault on a path-form mismatch) resolves the SIGSEGV reported in VisualText/nlp-engine#632.

Changes

  • Bump the nlp-engine submodule 3355d34 → 2b156ba (engine 3.5.6, carrying the #658 fix).

  • Add ReentrancyRegressionTest (non-skipped) reproducing the #632 crash path:

    • repeated analyze() in one process (the re-entrant addAna path that used to log "Named analyzer already present" and orphan a fresh NLP), and
    • switch to a temp working folder, analyze, then let TemporaryDirectory tear down the prior engine — the exact teardown that produced exit code 139.

    These assert the calls succeed and the process survives; they intentionally do not compare against the drifted output fixtures, so a green run is an unambiguous "no SIGSEGV" signal.

Why not just un-skip the existing suites

The existing ModuleTest/EngineTest are skipped for two reasons (per the in-file comment): the destructor segfault (#632, fixed here) and output-format drift in the text.txt_log fixtures. The fixtures still need regeneration, so those stay skipped; this PR isolates the crash fix so CI gives a clean signal.

Expected

test.yml (ubuntu) runs the suite to completion — the unittest summary prints and the job exits 0, where pre-#658 the process died with exit 139 before the summary.

Closes VisualText/nlp-engine#632 once green (and the engine 3.5.6 release ships).

🤖 Generated with Claude Code

Bump the nlp-engine submodule to 2b156ba (engine 3.5.6), which carries the
#658 fix for re-entrant analyze() orphaning/segfaulting on a path-form
mismatch.

Add ReentrancyRegressionTest (non-skipped) that reproduces the #632 crash
path -- repeated analyze() in one process, and switching to a temp working
folder then letting TemporaryDirectory tear down the prior engine -- and
asserts the calls succeed and the process survives. It does not compare
against the drifted output fixtures, so a clean run is an unambiguous signal
that the SIGSEGV (exit 139) is gone. The existing fixture-based suites stay
skipped pending fixture regeneration.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ddehilster
ddehilster merged commit 4e57a0d into main Jun 17, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

NLP-ENGINE-521 destructor segfault + buffer overflow in NLP_ENGINE::init (blocks py-package-nlpengine tests)

1 participant