baldurk/renderdoc

Crash on Replay

darksylinc opened this issue · 1 comments

Description

Capturing a Godot project from latest master branch on Linux succeeds and has no validation errors; but replay crashes RenderDoc.

Steps to reproduce

  1. Load the capture I am attaching
  2. Crashes with the following callstack:
1  fill_sampler_stage          lvp_execute.c    1116 0x7fff9126fae8 
2  handle_descriptor           lvp_execute.c    1235 0x7fff91270383 
3  handle_set_stage            lvp_execute.c    1268 0x7fff91270555 
4  handle_descriptor_sets      lvp_execute.c    1350 0x7fff91270b9c 
5  lvp_execute_cmd_buffer      lvp_execute.c    4039 0x7fff9127c376 
6  lvp_execute_cmds            lvp_execute.c    4337 0x7fff9127cdd0 
7  lvp_queue_submit            lvp_device.c     1520 0x7fff912634d8 
8  vk_queue_submit_final       vk_queue.c       377  0x7fff91346688 
9  vk_queue_submit_thread_func vk_queue.c       490  0x7fff91346af0 
10 impl_thrd_routine           threads_posix.c  67   0x7fff91326616 
11 start_thread                pthread_create.c 477  0x7ffff7f6d609 
12 clone                       clone.S          95   0x7fffefb2d353 

ss = nullptr
stage = MESA_SHADER_VERTEX (0)
ss_idx = 10
array_idx = 0
dyn_info->stage[stage].sampler_count = 0
state->ss_dirty[p_stage] = 1
descriptor = {
   {
      sampler = 0x0,
      sampler_view = 0x0
   },
   "image_view ="{
      resource = 0x0,
      "format = PIPE_FORMAT_NONE",
      access = 0,
      shader_access = 0,
      "u ="{
         "tex ="{
            first_layer = 0,
            last_layer = 0,
            level = 0
         },
         "buf ="{
            offset = 0,
            size = 0
         }
      }
   },
   "ssbo ="{
      buffer = 0x0,
      buffer_offset = 0,
      buffer_size = 0
   },
   "ubo ="{
      buffer = 0x0,
      buffer_offset = 0,
      buffer_size = 0,
      user_buffer = 0x0
   },
   uniform = 0x0
}
bindings ={
   descriptor_index = 12,
   "type = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER",
   array_size = 1,
   "valid = true",
   dynamic_index = 0,
   "stage ="{
      {
         const_buffer_index = -1,
         shader_buffer_index = -1,
         sampler_index = 10,
         sampler_view_index = 10,
         image_index = -1,
         uniform_block_index = -1,
         uniform_block_offset = 0
      },
      {
         const_buffer_index = -1,
         shader_buffer_index = -1,
         sampler_index = 10,
         sampler_view_index = 10,
         image_index = -1,
         uniform_block_index = -1,
         uniform_block_offset = 0
      },
      {
         const_buffer_index = -1,
         shader_buffer_index = -1,
         sampler_index = 10,
         sampler_view_index = 10,
         image_index = -1,
         uniform_block_index = -1,
         uniform_block_offset = 0
      },
      {
         const_buffer_index = -1,
         shader_buffer_index = -1,
         sampler_index = 10,
         sampler_view_index = 10,
         image_index = -1,
         uniform_block_index = -1,
         uniform_block_offset = 0
      },
      {
         const_buffer_index = -1,
         shader_buffer_index = -1,
         sampler_index = 10,
         sampler_view_index = 10,
         image_index = -1,
         uniform_block_index = -1,
         uniform_block_offset = 0
      },
      {
         const_buffer_index = -1,
         shader_buffer_index = -1,
         sampler_index = 10,
         sampler_view_index = 10,
         image_index = -1,
         uniform_block_index = -1,
         uniform_block_offset = 0
      }
   },
   immutable_samplers = 0x0
}

Repro:
RenderDoc.zip

If you think you need access to the original app to capture it, I can arrange that (it takes me time to setup the demo)

Environment

  • RenderDoc version: 1.30 (also master c4e3f96)
  • Operating System: Xubuntu 20.04 LTS
  • Graphics API: Vulkan

Driver: RADV
AMD Radeon RX 6800 XT (navi21, LLVM 15.0.7, DRM 3.46, 5.18.11+)
Mesa 23.2.1 refresh - kisak-mesa PPA

App passes validation and presents correctly.

AHHHH FOR THE LOVE OF GOD.

By my own mistake the system picked up lavapipe (non-conformant SW Vulkan implementation) instead of my HW.

The problem goes away when using real Vulkan HW.

Closing this ticket.