ruffle-rs / ruffle

A Flash Player emulator written in Rust
https://ruffle.rs
Other
15.8k stars 823 forks source link

Dora The Mummy Surgery #15919

Open Stefannag opened 8 months ago

Stefannag commented 8 months ago

Describe the bug

There are multiple errors, including:

ERROR core/src/display_object/movie_clip.rs:980 Got AVM2 error ReferenceError: Error #1065: Variable try{ label;�}�catch(e;E�rror){ filters * nam�e�;} is not defined. when attempting to assign symbol class try{ label;�}�catch(e;E�rror){ filters * nam�e�;}

ERROR core/src/display_object/movie_clip.rs:980 Got AVM2 error ReferenceError: Error #1065: Variable class PanelBreak imple�ments ITreeDataDescriptor2, IAutomationM�o�useSimula�tor is not defined. when attempting to assign symbol class class PanelBreak imple�ments ITreeDataDescriptor2, IAutomationM�o�useSimula�tor

ERROR core/src/display_object/movie_clip.rs:980 Got AVM2 error ReferenceError: Error #1065: Variable switch(p�rototype || contextMenu){ case else; rotationY >>> tabChi�ldren; break; case !currentScene; blendMode << contextMenu; break; case totalFram�es === width; c || soundTransform; break; default; !transform; break;} is not defined. when attempting to assign symbol class switch(p�rototype || contextMenu){ case else; rotationY >>> tabChi�ldren; break; case !currentScene; blendMode << contextMenu; break; case totalFram�es === width; c || soundTransform; break; default; !transform; break;}

ERROR core/src/tag_utils.rs:499 Error running definition tag: DefineBitsLossless, got Couldn't read SWF: failed to fill whole buffer

ERROR core/src/tag_utils.rs:499 Error running definition tag: DefineButton, got Couldn't read SWF: failed to fill whole buffer

Expected behavior

To load completely.

Content Location

Ruffle

Affected platform

Self-hosted version

Operating system

Windows 11

Browser

Google Chrome Version 120.0.6099.200 (Official Build) (64-bit)

Additional information

I couldn't find a flash version online.

kjarosh commented 8 months ago

Errors start with:

ERROR  Error decompressing SWF: corrupt deflate stream log.target = "swf::read";
log.module_path = "swf::read";
log.file = "swf/src/read.rs";
log.line = 115; [core.ruffle.e74796a9f7eaa248cb19.js:1:12418](https://www.getgames.io/scripts/ruffle/core.ruffle.e74796a9f7eaa248cb19.js)
ERROR core/src/tag_utils.rs:499 Error running definition tag: DefineShape2, got Couldn't read SWF: failed to fill whole buffer [core.ruffle.e74796a9f7eaa248cb19.js:1:12418](https://www.getgames.io/scripts/ruffle/core.ruffle.e74796a9f7eaa248cb19.js)
ERROR core/src/tag_utils.rs:499 Error running definition tag: DefineEditText, got Couldn't read SWF: failed to fill whole buffer 2 [core.ruffle.e74796a9f7eaa248cb19.js:1:12418](https://www.getgames.io/scripts/ruffle/core.ruffle.e74796a9f7eaa248cb19.js)
ERROR core/src/tag_utils.rs:499 Error running definition tag: DefineBitsJpeg4, got Couldn't read SWF: failed to fill whole buffer [core.ruffle.e74796a9f7eaa248cb19.js:1:12418](https://www.getgames.io/scripts/ruffle/core.ruffle.e74796a9f7eaa248cb19.js)
ERROR core/src/tag_utils.rs:499 Error running definition tag: DefineButton2, got Couldn't read SWF: failed to fill whole buffer
[...]

On desktop it panics:

2024-04-08T08:18:47.914783Z ERROR swf::read: Error decompressing SWF: corrupt deflate stream    
2024-04-08T08:18:47.914821Z  WARN swf::read: SWF length doesn't match header, may be corrupt    
2024-04-08T08:18:47.916221Z  INFO ruffle_core::context: Loaded SWF version 15, resolution 800x600 @ 30 FPS
thread 'main' panicked at core/src/display_object/movie_clip.rs:1348:31:
attempt to subtract with overflow
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic
   3: ruffle_core::display_object::movie_clip::MovieClip::loaded_bytes
             at ./core/src/display_object/movie_clip.rs:1348:31
   4: ruffle_core::player::Player::preload::{{closure}}
             at ./core/src/player.rs:1567:45
   5: ruffle_core::player::Player::mutate_with_update_context::{{closure}}
             at ./core/src/player.rs:1938:23
   6: gc_arena::arena::Arena<R>::mutate
             at ~/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gc-arena-0.5.0/src/arena.rs:170:13
   7: ruffle_core::player::Player::mutate_with_update_context
             at ./core/src/player.rs:1851:9
   8: ruffle_core::player::Player::preload
             at ./core/src/player.rs:1559:9
   9: ruffle_core::player::Player::run_frame
             at ./core/src/player.rs:1618:32
  10: ruffle_core::player::Player::tick
             at ./core/src/player.rs:433:17
[...]

It seems that the SWF is malformed, but Flash manages to recover from it. FFDec also reports a bunch of errors.