ruffle-rs / ruffle

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

Memory usage increasing forever when the desktop application is minimized. #15953

Open FoxMcCloud45 opened 6 months ago

FoxMcCloud45 commented 6 months ago

Describe what you were doing

I noticed constant memory increase during playback that persisted across loops. I left the program running until it crashed.

I cannot attach the SWF so I uploaded it to Catbox: https://files.catbox.moe/cwzzg2.swf
The original file comes from 4chan's /f/ board where files expire fairly fast.

What does the crash message say?

panicked at C:\Users\runneradmin.cargo\registry\src\index.crates.io-6f17d22bba15001f\wgpu-0.19.3\src\backend\wgpu_core.rs:3006:5: wgpu error: Validation Error

Caused by: In Queue::write_texture Not enough memory left.

Ruffle Version

0.1.0-nightly (f737739c15b92d687e8e4b2193519702a7d0a15b 2024-04-09)

Affected platform

Desktop app

Operating system

Windows 10.0.19044 (Windows 10 IoT Enterprise LTSC 2021) [64-bit]

Additional information

Filename: takeo_ischi_chicken.swf

Render Info

Renderer: wgpu Adapter Backend: Vulkan Adapter Name: "GeForce GT 755M" Adapter Device Type: DiscreteGpu Adapter Driver Name: "NVIDIA" Adapter Driver Info: "425.31" Enabled features: Features(FLOAT32_FILTERABLE | TEXTURE_COMPRESSION_BC | TEXTURE_ADAPTER_SPECIFIC_FORMAT_FEATURES | SHADER_UNUSED_VERTEX_OUTPUT) Available features: Features(DEPTH_CLIP_CONTROL | TIMESTAMP_QUERY | INDIRECT_FIRST_INSTANCE | RG11B10UFLOAT_RENDERABLE | DEPTH32FLOAT_STENCIL8 | TEXTURE_FORMAT_16BIT_NORM | PIPELINE_STATISTICS_QUERY | TIMESTAMP_QUERY_INSIDE_PASSES | MAPPABLE_PRIMARY_BUFFERS | TEXTURE_BINDING_ARRAY | BUFFER_BINDING_ARRAY | STORAGE_RESOURCE_BINDING_ARRAY | SAMPLED_TEXTURE_AND_STORAGE_BUFFER_ARRAY_NON_UNIFORM_INDEXING | UNIFORM_BUFFER_AND_STORAGE_TEXTURE_ARRAY_NON_UNIFORM_INDEXING | PARTIALLY_BOUND_BINDING_ARRAY | MULTI_DRAW_INDIRECT | MULTI_DRAW_INDIRECT_COUNT | PUSH_CONSTANTS | ADDRESS_MODE_CLAMP_TO_ZERO | ADDRESS_MODE_CLAMP_TO_BORDER | POLYGON_MODE_LINE | POLYGON_MODE_POINT | VERTEX_WRITABLE_STORAGE | CLEAR_TEXTURE | SPIRV_SHADER_PASSTHROUGH | MULTIVIEW | TEXTURE_FORMAT_NV12 | SHADER_F64 | SHADER_I16 | SHADER_PRIMITIVE_INDEX | DUAL_SOURCE_BLENDING) Current limits: Limits { max_texture_dimension_1d: 16384, max_texture_dimension_2d: 16384, max_texture_dimension_3d: 2048, max_texture_array_layers: 256, max_bind_groups: 4, max_bindings_per_bind_group: 1000, max_dynamic_uniform_buffers_per_pipeline_layout: 8, max_dynamic_storage_buffers_per_pipeline_layout: 0, max_sampled_textures_per_shader_stage: 16, max_samplers_per_shader_stage: 16, max_storage_buffers_per_shader_stage: 0, max_storage_textures_per_shader_stage: 0, max_uniform_buffers_per_shader_stage: 11, max_uniform_buffer_binding_size: 65536, max_storage_buffer_binding_size: 0, max_vertex_buffers: 8, max_buffer_size: 268435456, max_vertex_attributes: 16, max_vertex_buffer_array_stride: 255, min_uniform_buffer_offset_alignment: 256, min_storage_buffer_offset_alignment: 32, max_inter_stage_shader_components: 128, max_compute_workgroup_storage_size: 0, max_compute_invocations_per_workgroup: 0, max_compute_workgroup_size_x: 0, max_compute_workgroup_size_y: 0, max_compute_workgroup_size_z: 0, max_compute_workgroups_per_dimension: 0, max_push_constant_size: 0, max_non_sampler_bindings: 1000000 } Surface quality: low Surface samples: 1 Surface size: (800, 600, 1)

FoxMcCloud45 commented 6 months ago

I can't seem to reproduce it again, for some reason. I got the memory usage to increase by doing some frame-by-frame operations but nowhere near the original issue (12 GB of RAM used).

EDIT: This happens when the program is minimized. Memory usage keeps increasing. If the window is in the foreground or in the background without being minimized, everything works correctly.