Describe the bug
Exporting a note to PDF in CodiMD 2.6.0 crashes PhantomJS whenever the note contains certain emoji characters, which restarts the whole container.
To Reproduce
Create or edit a note.
Insert any emoji (e.g. 😀).
Click Export → PDF .
The request hangs and the container restarts.
Expected behavior
A PDF should be generated successfully.
The service should remain online.
Actual behavior
PDF generation fails.
docker logs show PhantomJS crashing with SIGFPE.
The CodiMD container restarts automatically.
Environment
Item
Value
CodiMD ver.
2.6.0
Deployment
docker-compose
Node ver.
16.20.2 (image default)
Base OS
Debian Buster
PDF engine
markdown-pdf + PhantomJS
docker-compose excerpt (masked)
click to expand
services :
codimd :
image : <PRIVATE_REGISTRY>/hackmdio/hackmd:2.6.0
environment :
CMD_URL_PATH : codimd
CMD_DOMAIN : <YOUR_DOMAIN>
CMD_PROTOCOL_USESSL : " true"
QT_QPA_PLATFORM : " "
# Database
CMD_DB_URL : postgres://codimd:<MASKED_PW>@codimd_db/codimd
# Misc
CMD_EMAIL : " false"
CMD_PLANTUML_SERVER : https://<YOUR_DOMAIN>/plantuml
CMD_ALLOW_ANONYMOUS : " false"
CMD_ALLOW_ANONYMOUS_EDITS : " false"
CMD_CSP_ENABLE : " false"
Logs (full excerpt)
2025-07-09T06:13:04.445Z info: <MASKED_IP> - - [09/Jul/2025:06:13:04 +0000] "GET /me HTTP/1.1" 304 - "https://<YOUR_DOMAIN>/codimd/ixLMZtInSNiOnrbOkQ-Q_w" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0"
2025-07-09T06:13:06.517Z info: <MASKED_IP> - - [09/Jul/2025:06:13:06 +0000] "GET /uploads/upload_845dbee74d2337302b91fb126a4691db.png HTTP/1.1" 200 32405 "https://<YOUR_DOMAIN>/codimd/ixLMZtInSNiOnrbOkQ-Q_w" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36 Edg/138.0.0.0"
2025-07-09T06:13:20.968Z info: deserializeUser: c35f23dd-2732-46b7-9283-15b14eac234b
2025-07-09T06:13:21.478Z error: uncaughtException: Command failed: /home/hackmd/app/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs /home/hackmd/app/node_modules/markdown-pdf/phantom/render.js /tmp/tmp-<MASKED>.html /tmp/tmp-<MASKED>.pdf /home/hackmd/app /home/hackmd/app/node_modules/markdown-pdf/runnings.js /home/hackmd/app/node_modules/markdown-pdf/css/pdf.css /home/hackmd/app/node_modules/highlight.js/styles/github-gist.css A4 portrait 2cm 0 10000
PhantomJS has crashed. Please read the bug reporting guide at
<http://phantomjs.org/bug-reporting.html> and file a bug report.
Error: Command failed: /home/hackmd/app/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs /home/hackmd/app/node_modules/markdown-pdf/phantom/render.js /tmp/tmp-<MASKED>.html /tmp/tmp-<MASKED>.pdf /home/hackmd/app /home/hackmd/app/node_modules/markdown-pdf/runnings.js /home/hackmd/app/node_modules/markdown-pdf/css/pdf.css /home/hackmd/app/node_modules/highlight.js/styles/github-gist.css A4 portrait 2cm 0 10000
PhantomJS has crashed. Please read the bug reporting guide at
<http://phantomjs.org/bug-reporting.html> and file a bug report.
at ChildProcess.exithandler (node:child_process:402:12)
at ChildProcess.emit (node:events:513:28)
at maybeClose (node:internal/child_process:1100:16)
at Socket.<anonymous> (node:internal/child_process:458:11)
at Socket.emit (node:events:513:28)
at Pipe.<anonymous> (node:net:301:12)
2025-07-09T06:13:21.481Z error: Process will exit now.
Info: try to connect to tcp://codimd_db in port 5432
2025/07/09 06:13:22 portchecker.go:56: dial tcp codimd_db:5432: connect: connection success
Possible cause / context
Matches Rendering Emojis hajareshyam/pdf-creator-node#45 — PhantomJS cannot render certain emoji/Unicode glyphs.
Removing all emoji lets the export succeed → strong evidence of an encoding issue.
PhantomJS is unmaintained; CodiMD relies on it via markdown-pdf.
Potential solutions
Upgrade to CodiMD 3.x (if it has moved to a Chromium/Puppeteer backend).
Replace PhantomJS with Puppeteer /Playwright in a custom build.
Test latest phantomjs-prebuilt patch to confirm whether the crash persists.
Help wanted
Can maintainers reproduce this crash with an emoji-containing note?
Is there an official plan to migrate away from PhantomJS?
Any patch or workaround would be greatly appreciated.
Describe the bug
Exporting a note to PDF in CodiMD 2.6.0 crashes PhantomJS whenever the note contains certain emoji characters, which restarts the whole container.
To Reproduce
Expected behavior
Actual behavior
docker logsshow PhantomJS crashing withSIGFPE.Environment
markdown-pdf+ PhantomJSdocker-compose excerpt (masked)
click to expand
Logs (full excerpt)
Possible cause / context
markdown-pdf.Potential solutions
phantomjs-prebuiltpatch to confirm whether the crash persists.Help wanted