[GH-ISSUE #4494] [Bug] draw.io ASAR capture opens an invalid-file dialog before declared actions #1780

Open
opened 2026-10-16 21:10:11 +00:00 by bsakaguchi · 0 comments
Owner

Originally created by @N0zoM1z0 on GitHub (Oct 16, 2026).
Original GitHub issue: https://github.com/morluto/rea/issues/4494

Before submitting

  • I searched open and closed reports. Related #2974 concerns packaged Windows startup; this is an unchanged ASAR on a generic Linux runtime.
  • No credentials or sensitive target data are included.

Area

Process capture or runtime observation

Observed behavior

capture_electron_scenario reaches the real draw.io editor, but an unexpected Invalid file data dialog appears before the declared interaction. Clicking the sidebar remains blocked until request cancellation. Dismissing the dialog through a declared click allows a second declared click to insert a real shape (canvas SVG elements 0 → 2, unsaved-changes indicator appears).

Reproduction

  1. Download official draw.io Desktop 32.4.1, extract its unchanged resources/app.asar and accompanying resources.
  2. Select a generic Electron 44.7.0 executable and a fresh profile. Invoke the public CLI with capture-electron-scenario JSON selecting that executable/ASAR, args --no-sandbox, --disable-gpu, --user-data-dir=<new profile>, and one wait action of 3000 ms.
  3. The wait completes and the window title is Untitled Diagram - draw.io, but independent renderer inspection shows the invalid-file dialog. A palette click without dismissing it stays pending until cancelled.

Expected behavior

Opening the selected application without a document argument should allow a new diagram without an invalid-document alert. REA/transport startup arguments should not be interpreted as caller-selected documents.

Impact and scope

Real-app actions can stall behind an unexpected startup modal. Observed on the main control and the listener-fix candidate; not introduced by #4389. Separate from Linux cleanup uncertainty (#4282), which also prevents a complete capture pass.

REA version

6.5.0; shared-provider control 180ba03bfddd5916251e81e97a500b1ede7a9eea. Public CLI smoke executed on listener candidate 3c330f259943b3f535897ca4951777c484259159; its launch/state implementation is unchanged from the control.

Runtime and platform

Linux x64, Node 24.18.0, generic Electron 44.7.0, Xvfb, fresh process/profile each time. Official packaged draw.io disables the Inspector fuse and was not launched through Inspector; no packaged-runtime compatibility claim.

Target and artifact context

Official AppImage SHA-256 c687a9f1ddcaa146b78547452d264c03c2afcf125639cba5deeb65f3e9554c9e; unchanged ASAR SHA-256 e64b9650c0b8241ca9a7d33b56386a385bceee63270cec701d3a467347b697e6.

Interface

Public CLI reproduction; shared-provider capture and independent Playwright renderer/argv observations for diagnosis.

Earliest failure stage

Application startup / argument interpretation, before the requested editor interaction.

Relevant output or evidence

Observed process.defaultApp === true, with this argv prefix:

electron, --inspect=0, --remote-debugging-port=0, -r, <REA hook>, <app.asar>, ...requested flags

The actual renderer reports Invalid file data. Both main/candidate ABBA runs reproduce the modal; all four can recover and insert a shape after a declared OK click. Final provider results remain cleanup_failed / public cleanup_incomplete; these are partial/failed workflows, not performance successes.

Typed outcome or recovery expected

Preserve caller arguments and normal application startup. A launch failure or partial capture must retain its actual reason; do not repair this by weakening process ownership or claiming cleanup success.

Analysis or suspected cause

Source-derived hypothesis: the application's src/main/electron.js:883–892 passes process.argv to parseDrawioArgs, while the observed argv contains instrumentation/transport arguments before the ASAR. Which exact entry becomes a document has not been traced. NOT_ENOUGH_INFO: direct uninstrumented launch control and a minimal argument-owner fix have not run. This report records the real blocker, not a completed diagnosis.

Additional context

Found during #4390 real-app verification under #4027. Related packaged startup report #2974 has a different platform/runtime scope. Input packages and profiles are regenerable and will not be committed.

Originally created by @N0zoM1z0 on GitHub (Oct 16, 2026). Original GitHub issue: https://github.com/morluto/rea/issues/4494 ### Before submitting - [x] I searched open and closed reports. Related #2974 concerns packaged Windows startup; this is an unchanged ASAR on a generic Linux runtime. - [x] No credentials or sensitive target data are included. ### Area Process capture or runtime observation ### Observed behavior `capture_electron_scenario` reaches the real draw.io editor, but an unexpected **Invalid file data** dialog appears before the declared interaction. Clicking the sidebar remains blocked until request cancellation. Dismissing the dialog through a declared click allows a second declared click to insert a real shape (canvas SVG elements 0 → 2, unsaved-changes indicator appears). ### Reproduction 1. Download official [draw.io Desktop 32.4.1](https://github.com/jgraph/drawio-desktop/releases/tag/v32.4.1), extract its unchanged `resources/app.asar` and accompanying resources. 2. Select a generic Electron 44.7.0 executable and a fresh profile. Invoke the public CLI with `capture-electron-scenario` JSON selecting that executable/ASAR, args `--no-sandbox`, `--disable-gpu`, `--user-data-dir=<new profile>`, and one `wait` action of 3000 ms. 3. The wait completes and the window title is `Untitled Diagram - draw.io`, but independent renderer inspection shows the invalid-file dialog. A palette click without dismissing it stays pending until cancelled. ### Expected behavior Opening the selected application without a document argument should allow a new diagram without an invalid-document alert. REA/transport startup arguments should not be interpreted as caller-selected documents. ### Impact and scope Real-app actions can stall behind an unexpected startup modal. Observed on the main control and the listener-fix candidate; not introduced by #4389. Separate from Linux cleanup uncertainty (#4282), which also prevents a complete capture pass. ### REA version 6.5.0; shared-provider control `180ba03bfddd5916251e81e97a500b1ede7a9eea`. Public CLI smoke executed on listener candidate `3c330f259943b3f535897ca4951777c484259159`; its launch/state implementation is unchanged from the control. ### Runtime and platform Linux x64, Node 24.18.0, generic Electron 44.7.0, Xvfb, fresh process/profile each time. Official packaged draw.io disables the Inspector fuse and was not launched through Inspector; no packaged-runtime compatibility claim. ### Target and artifact context Official AppImage SHA-256 `c687a9f1ddcaa146b78547452d264c03c2afcf125639cba5deeb65f3e9554c9e`; unchanged ASAR SHA-256 `e64b9650c0b8241ca9a7d33b56386a385bceee63270cec701d3a467347b697e6`. ### Interface Public CLI reproduction; shared-provider capture and independent Playwright renderer/argv observations for diagnosis. ### Earliest failure stage Application startup / argument interpretation, before the requested editor interaction. ### Relevant output or evidence Observed `process.defaultApp === true`, with this argv prefix: ```text electron, --inspect=0, --remote-debugging-port=0, -r, <REA hook>, <app.asar>, ...requested flags ``` The actual renderer reports `Invalid file data`. Both main/candidate ABBA runs reproduce the modal; all four can recover and insert a shape after a declared OK click. Final provider results remain `cleanup_failed` / public `cleanup_incomplete`; these are partial/failed workflows, not performance successes. ### Typed outcome or recovery expected Preserve caller arguments and normal application startup. A launch failure or partial capture must retain its actual reason; do not repair this by weakening process ownership or claiming cleanup success. ### Analysis or suspected cause Source-derived hypothesis: the application's `src/main/electron.js:883–892` passes `process.argv` to `parseDrawioArgs`, while the observed argv contains instrumentation/transport arguments before the ASAR. Which exact entry becomes a document has **not** been traced. `NOT_ENOUGH_INFO`: direct uninstrumented launch control and a minimal argument-owner fix have not run. This report records the real blocker, not a completed diagnosis. ### Additional context Found during #4390 real-app verification under #4027. Related packaged startup report #2974 has a different platform/runtime scope. Input packages and profiles are regenerable and will not be committed.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#1780
No description provided.