ruffle-rs / ruffle

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

Problem with avm2 Shape #4356

Closed kukininj closed 3 years ago

kukininj commented 3 years ago

Hi, there is an issue with linux_x86_64 from https://github.com/ruffle-rs/ruffle/releases/tag/nightly-2021-05-18

Error name: Error Error message: panicked at 'called Option::unwrap() on a None value', core/src/display_object.rs:1201:34

Describe the bug

Ruffle desktop When I try to play provided SWF ruffle starts then for a second displays shape and then panics:

/tmp >>> RUST_LOG="warn,ruffle_core=debug,avm_trace=trace" ruffle-nightly-2021_05_18-linux-x86_64/ruffle ShapeExample.swf                                                                                      [130]
[2021-05-18T09:57:58Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags DEVICE_LOCAL | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T09:57:58Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T09:57:58Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags DEVICE_LOCAL | HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T09:57:58Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags HOST_VISIBLE | HOST_COHERENT | HOST_CACHED | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) unable to open slave
[2021-05-18T09:57:58Z ERROR ruffle_desktop] Unable to create audio device: The requested device is no longer available. For example, it has been unplugged.
[2021-05-18T09:57:58Z INFO  ruffle_core::player] Loaded SWF version 38, with a resolution of 500x375
[2021-05-18T09:57:58Z WARN  ruffle_core::display_object::movie_clip] This SWF contains ActionScript 3 which is not yet supported by Ruffle. The movie may not work as intended.
[2021-05-18T09:58:01Z INFO  ruffle_core::backend::log] beginFill
[2021-05-18T09:58:01Z INFO  ruffle_core::backend::log] lineStyle
[2021-05-18T09:58:01Z INFO  ruffle_core::backend::log] drawRect
[2021-05-18T09:58:01Z INFO  ruffle_core::backend::log] endFill
[2021-05-18T09:58:01Z INFO  ruffle_core::backend::log] addChild
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', core/src/display_object.rs:1201:34
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
zsh: abort (core dumped)  RUST_LOG="warn,ruffle_core=debug,avm_trace=trace"  ShapeExample.swf

rust-gdb

/tmp/ruffle-nightly-2021-05-18 >>> RUST_LOG="warn,ruffle_core=debug,avm_trace=trace" rust-gdb target/debug/ruffle_desktop                                                                                      [130]
GNU gdb (GDB) 10.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from target/debug/ruffle_desktop...
(gdb) break ruffle_core::display_object::TDisplayObject::vm_type
Breakpoint 1 at 0x1987573: ruffle_core::display_object::TDisplayObject::vm_type. (10 locations)
(gdb) r
Starting program: /tmp/ruffle-nightly-2021-05-18/target/debug/ruffle_desktop
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[Detaching after vfork from child process 190825]
[Detaching after vfork from child process 190827]
[Detaching after vfork from child process 190829]
[Detaching after vfork from child process 190835]
[Detaching after vfork from child process 190840]
[New Thread 0x7ffff7713640 (LWP 190871)]
[2021-05-18T11:18:57Z WARN  gfx_backend_vulkan] Unable to find layer: VK_LAYER_KHRONOS_validation
[New Thread 0x7fffea5a0640 (LWP 190874)]
[New Thread 0x7fffe9d9f640 (LWP 190875)]
[New Thread 0x7fffe959e640 (LWP 190876)]
[New Thread 0x7fffe8d9d640 (LWP 190877)]
[2021-05-18T11:18:57Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags DEVICE_LOCAL | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T11:18:57Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T11:18:57Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags DEVICE_LOCAL | HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T11:18:57Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags HOST_VISIBLE | HOST_COHERENT | HOST_CACHED | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[New Thread 0x7fffe859c640 (LWP 190878)]
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) unable to open slave
[Thread 0x7fffe859c640 (LWP 190878) exited]
[2021-05-18T11:18:57Z ERROR ruffle_desktop] Unable to create audio device: The requested device is no longer available. For example, it has been unplugged.
[New Thread 0x7fffe859c640 (LWP 190880)]
[New Thread 0x7fffe839b640 (LWP 190881)]

Thread 1 "ruffle_desktop" hit Breakpoint 1, ruffle_core::display_object::TDisplayObject::vm_type<ruffle_core::display_object::movie_clip::MovieClip> (self=0x7fffffff7d98, context=0x7fffffff8090)
    at /tmp/ruffle-nightly-2021-05-18/core/src/display_object.rs:1201
1201            let movie = self.movie().unwrap();
(gdb) c
Continuing.
[2021-05-18T11:18:59Z INFO  ruffle_core::player] Loaded SWF version 38, with a resolution of 500x375

Thread 1 "ruffle_desktop" hit Breakpoint 1, ruffle_core::display_object::TDisplayObject::vm_type<ruffle_core::display_object::movie_clip::MovieClip> (self=0x7fffffff8238, context=0x7fffffff8ae8)
    at /tmp/ruffle-nightly-2021-05-18/core/src/display_object.rs:1201
1201            let movie = self.movie().unwrap();
(gdb)
Continuing.
[2021-05-18T11:19:00Z WARN  ruffle_core::display_object::movie_clip] This SWF contains ActionScript 3 which is not yet supported by Ruffle. The movie may not work as intended.
[Detaching after vfork from child process 190887]

Thread 1 "ruffle_desktop" hit Breakpoint 1, ruffle_core::display_object::TDisplayObject::vm_type<ruffle_core::display_object::movie_clip::MovieClip> (self=0x7fffffff9670, context=0x7fffffff9978)
    at /tmp/ruffle-nightly-2021-05-18/core/src/display_object.rs:1201
1201            let movie = self.movie().unwrap();
(gdb)
Continuing.
[2021-05-18T11:19:03Z INFO  ruffle_core::backend::log] beginFill
[2021-05-18T11:19:03Z INFO  ruffle_core::backend::log] lineStyle
[2021-05-18T11:19:03Z INFO  ruffle_core::backend::log] drawRect
[2021-05-18T11:19:03Z INFO  ruffle_core::backend::log] endFill
[2021-05-18T11:19:03Z INFO  ruffle_core::backend::log] addChild

Thread 1 "ruffle_desktop" hit Breakpoint 1, ruffle_core::display_object::TDisplayObject::vm_type<ruffle_core::display_object::movie_clip::MovieClip> (self=0x7fffffff92c0, context=0x7fffffff9978)
    at /tmp/ruffle-nightly-2021-05-18/core/src/display_object.rs:1201
1201            let movie = self.movie().unwrap();
(gdb)
Continuing.

Thread 1 "ruffle_desktop" hit Breakpoint 1, ruffle_core::display_object::TDisplayObject::vm_type<ruffle_core::display_object::graphic::Graphic> (self=0x7fffffff9490, context=0x7fffffff9978)
    at /tmp/ruffle-nightly-2021-05-18/core/src/display_object.rs:1201
1201            let movie = self.movie().unwrap();
(gdb)
Continuing.
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', core/src/display_object.rs:1201:34
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Thread 1 "ruffle_desktop" received signal SIGABRT, Aborted.
0x00007ffff77cbef5 in raise () from /usr/lib/libc.so.6
(gdb)
Continuing.
Couldn't get registers: No such process.
Couldn't get registers: No such process.
(gdb) [Thread 0x7fffe839b640 (LWP 190881) exited]
[Thread 0x7fffe859c640 (LWP 190880) exited]
[Thread 0x7fffe8d9d640 (LWP 190877) exited]
[Thread 0x7fffe959e640 (LWP 190876) exited]
[Thread 0x7fffe9d9f640 (LWP 190875) exited]
[Thread 0x7fffea5a0640 (LWP 190874) exited]
[Thread 0x7ffff7713640 (LWP 190871) exited]

Program terminated with signal SIGABRT, Aborted.
The program no longer exists.
(gdb)

Expected behavior

ruffle-nightly-2021_05_17-linux-x86_64 has no such issue, playing the same SWF gives no issues.

/tmp >>> RUST_LOG="warn,ruffle_core=debug,avm_trace=trace" ruffle-nightly-2021_05_17-linux-x86_64/ruffle ShapeExample.swf                                                                                      [130]
[2021-05-18T09:57:44Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags DEVICE_LOCAL | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T09:57:44Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T09:57:44Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags DEVICE_LOCAL | HOST_VISIBLE | HOST_COHERENT | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
[2021-05-18T09:57:44Z WARN  gfx_backend_vulkan::physical_device] Skipping memory type with unknown flags HOST_VISIBLE | HOST_COHERENT | HOST_CACHED | DEVICE_COHERENT_AMD | DEVICE_UNCACHED_AMD
ALSA lib pcm_dmix.c:1075:(snd_pcm_dmix_open) unable to open slave
[2021-05-18T09:57:44Z ERROR ruffle_desktop] Unable to create audio device: The requested device is no longer available. For example, it has been unplugged.
[2021-05-18T09:57:44Z INFO  ruffle_core::player] Loaded SWF version 38, with a resolution of 500x375
[2021-05-18T09:57:44Z WARN  ruffle_core::display_object::movie_clip] This SWF contains ActionScript 3 which is not yet supported by Ruffle. The movie may not work as intended.
[2021-05-18T09:57:46Z INFO  ruffle_core::backend::log] beginFill
[2021-05-18T09:57:46Z INFO  ruffle_core::backend::log] lineStyle
[2021-05-18T09:57:46Z INFO  ruffle_core::backend::log] drawRect
[2021-05-18T09:57:46Z INFO  ruffle_core::backend::log] endFill
[2021-05-18T09:57:46Z INFO  ruffle_core::backend::log] addChild
^C

Platform

I'm using ruffle desktop on Manjaro linux with swaywm,

~ >>> uname -a
Linux manjaro 5.12.1-2-MANJARO #1 SMP PREEMPT Sun May 2 13:56:40 UTC 2021 x86_64 GNU/Linux

compiled with mxmlc ShapeExample.zip

relrelb commented 3 years ago

Fixed by #5440.