daisy / pipeline

Super-project that aggregates all Pipeline related code, provides a common tracker for Pipeline related issues and holds the Pipeline website
http://daisy.github.io/pipeline
20 stars 20 forks source link

Pipeline 2 jhyphen crashes #779

Open PaulRambags opened 1 month ago

PaulRambags commented 1 month ago

Expected Behavior

I expect the Pipeline 2 with our Dedicon module to run without crashing.

Actual Behavior

The Pipeline 2 crashes. Sometimes there is a stack trace in daisy-pipeline.log. Also sometimes the JVM generates an exception report because of an EXCEPTION_ACCESS_VIOLATION which has a stack trace. Often the Pipeline just stops working without any stack trace. When I inspect the stack trace, the problem seems to be in jhyphen. Whether the pipeline crashes depends on various aspects: The version of the JVM that is used, the input (the DTBook), and how long the Pipeline has already been running / how many books it has processed since the last restart.

Steps to Reproduce

Provide a list of steps taken to reproduce the problem.

  1. Use pipeline-assembly commit ed3ac2d (‘Release Notes of 1.14.14’) to create a version with our Dedicon module. To include this module, add the following in pom.xml at line 2519: <artifactItem><groupId>nl.dedicon.pipeline</groupId><artifactId>braille-module</artifactId><version>2.0.1</version></artifactItem>
  2. Run make.exe zip-win in a command prompt. This will create a assembly-1.14.15-SNAPSHOT-win.zip file in the target folder.
  3. Unzip that file. This will give a daisy-pipeline folder.
  4. Run pipeline2.bat in the bin subfolder to start the Pipeline.
  5. Let the Pipeline process a DTBook. I have several examples of books that result in crashes, but I can't publish those publicly. Processing can be done via the Web UI or by invoking dp2.exe dedicon:dtbook-to-pef --source {source.xml} --output {target-folder} in the cli subfolder.

Details

Crashes started to occur more frequently after I added the following in the style sheet:

/* --------------------------------------------------------------------------------
 * Use Dutch as language for interpolation
 *
 * If $braille-notation-code == "nl", capital signs etc. are formatted in Dutch.
 * Hyphenation rules remain unchanged, i.e. hyphenation follows the language of
 * the dtbook.
 */
@if $braille-notation-code == "nl" {
    @text-transform {
        system: braille;
        language: nl;
        type: literary;
    }
}

Environment

Logs

https://gist.github.com/PaulRambags/e9e0b00638a026735a48d101d93a76c2