Node.js import of a malformed GPX file does not return
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 66/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- node.js, typescript
Direzione di ricerca
Start at ScoreLoader.loadScoreFromBytes and trace how malformed GPX input is parsed; the issue provides a Node.js reproduction that generates the input and compares it with a control case. Run that reproduction and identify where the backward entry causes the import to stop returning. Done means the malformed input returns an import error promptly, while the control case continues to fail promptly as shown.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
[!NOTE]
AI-authored disclosure (alphatab-ai-authored-v1)Portions of this content were authored by an AI agent. The agent has read
AGENTS.md and the human submitter accepts responsibility for
compliance with the rules in that document.
Is there an existing issue for this?
- I have searched the existing issues
I have read the contribution rules
- I have read CONTRIBUTING.md and, if any AI agent helped draft this issue, AGENTS.md.
AI authorship
AI-assisted (disclosure block included as described in AGENTS.md)
Current Behavior
In Node.js with alphaTab 1.8.4, ScoreLoader.loadScoreFromBytes does not return or throw for the small malformed GPX input generated below. A parent process terminates the import after 2.5 seconds. The control input returns an import error promptly in the same environment.
This affects callers that import an invalid file synchronously: the call does not yield control back to the application. This report concerns observed import behavior only.
Expected Behavior
Reject the malformed file with an import error and return control to the caller, as the control case does.
Steps To Reproduce
- In a temporary directory, run
npm init -yandnpm install --save-exact @coderline/[email protected]. - Save the following as
repro.cjsin that directory. - Run
node repro.cjs. The script runs each import in a child process and terminates it after 2.5 seconds, so the reproduction itself does not hang indefinitely.
const { spawnSync } = require('node:child_process');
const os = require('node:os');
const alphaTab = require('@coderline/alphatab');
if (process.argv[2]) {
const bytes = Buffer.alloc(4 + 3 * 4096);
bytes.write('BCFS');
if (process.argv[2] === 'backward') {
const entry = 4 + 2 * 4096;
bytes.writeUInt32LE(2, entry);
bytes.write('score.gpif', entry + 4);
bytes.writeUInt32LE(1, entry + 0x8c);
bytes.writeUInt32LE(1, entry + 0x94);
}
console.log('Calling ScoreLoader.loadScoreFromBytes');
try {
alphaTab.importer.ScoreLoader.loadScoreFromBytes(bytes);
console.log('Import returned');
} catch (error) {
console.log('Import threw: ' + error.message);
}
} else {
alphaTab.Environment.printEnvironmentInfo();
console.log(`Node ${process.version}; ${os.type()} ${os.release()}; ${os.arch()}`);
for (const mode of ['control', 'backward']) {
const result = spawnSync(process.execPath, [__filename, mode], {
timeout: 2500,
encoding: 'utf8',
maxBuffer: 1024 * 1024
});
console.log(`--- ${mode} ---`);
process.stdout.write(result.stdout || '');
process.stderr.write(result.stderr || '');
console.log(`status=${result.status}; signal=${result.signal}; error=${result.error?.code || 'none'}`);
}
}
Observed output after the environment details:
--- control ---
Calling ScoreLoader.loadScoreFromBytes
Import threw: No compatible importer found for file
status=0; signal=null; error=none
--- backward ---
Calling ScoreLoader.loadScoreFromBytes
status=null; signal=SIGTERM; error=ETIMEDOUT
Link to jsFiddle, CodePen, Project
The complete reproduction and input generator are included above; no application repository or external score file is required.
Version and Environment
Actual output from alphaTab.Environment.printEnvironmentInfo(), followed by Node.js and operating-system information from the reproduction:
[AlphaTab][VersionInfo] alphaTab 1.8.4
[AlphaTab][VersionInfo] commit: 022a45c8e42370f9e12e68949d11eada370da83d
[AlphaTab][VersionInfo] build date: 2026-07-05T14:46:18.224Z
[AlphaTab][VersionInfo] High DPI: 1
[AlphaTab][VersionInfo] Platform: NodeJs
[AlphaTab][VersionInfo] WebPack: false
[AlphaTab][VersionInfo] Vite: false
Node v26.12.0; Darwin 27.0.0; arm64
Platform
Node.js
Anything else?
The sample is intentionally malformed and generated entirely by the script. This has been reproduced with the released npm package version shown above. Other versions and platforms have not been tested.
- Lingua principale
- TypeScript
- Stelle
- 1.9k
- Fork
- 297
- Merge medio
- 9h 2m
- PR unite (30g)
- 44
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di CoderLine/alphaTab
-
ai-authored
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
I maintainer di solito rispondono entro 1 giorno
-
Respect systems layout of MusicXMLForse già presa @Danielku15 l’ha presa 18 giorni fa. Aperta
CoderLine/alphaTab#2909 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Expose Lyrics in public apiForse già presa @Danielku15 l’ha presa 18 giorni fa. Aperta
CoderLine/alphaTab#2908 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Show accentuations on tab-only stavesForse già presa @Danielku15 l’ha presa 18 giorni fa. Aperta
CoderLine/alphaTab#2906 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Support tuning alterationsForse già presa @kulek1 l’ha presa 69 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di CoderLine/alphaTab
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
db-ux-design-system/core-web#8613 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
bug:new
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
callstackincubator/simlock#934 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
gchq/LD-Explorer#286 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
foxglove/mcap#1907 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno