Skip to content

Custom dictionaries (LibreOffice/Hunspell) cause DocumentServer 9.4.0 to crash with "Fatal error in v8::ToLocalChecked" #3707

@Semarnat73

Description

@Semarnat73

This issue is unique.

  • I have used the search tool and did not find an issue describing my bug.

Operating System of DocumentServer

Docker

Version information

9.4

Expected Behavior

Adding a custom dictionary (following the official guide) should allow the server to load the dictionary and provide spell-check for the specific locale (e.g., es_MX). This worked in previous versions (e.g., v9.3.1) without causing a server shutdown.

Actual Behavior

When running the update.py script to compile the dictionary, the docservice process crashes. The logs show a SyntaxError: Unexpected string followed by a Fatal error in v8::ToLocalChecked - Empty MaybeLocal and Illegal instruction (core dumped). This causes the entire DocumentServer process (which is now a single consolidated process in v9.4.0) to restart or stop responding, making the editor unavailable.

Reproduction Steps

Install ONLYOFFICE Docs v9.4.0 via Docker.

  1. Create a dictionary directory under /var/www/onlyoffice/documentserver/dictionaries/es_MX.

  2. Place a standard LibreOffice .dic and .aff file (es_MX) in that directory.

  3. Create the es_MX.json configuration file with {"codes": [2058]}.

  4. Run python3 /var/www/onlyoffice/documentserver/server/dictionaries/update.py inside the container.

  5. Observe the V8 engine crash and the container instability in docker logs.

Additional information

The issue seems specific to the v9.4.0 architecture change where components were consolidated into a single process. It appears that the update.py script, when encountering complex Hunspell rules or specific encoding characters in third-party dictionaries, triggers a fatal error in the V8 engine, which now brings down the entire application due to the new process consolidation. The error Fatal error in v8::ToLocalChecked - Empty MaybeLocal suggests an issue with how the compiler processes the dictionary input into the new consolidated engine.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions