Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Destroying an unused Engine crashes #7866

Closed
mcooley opened this issue May 17, 2024 · 0 comments · Fixed by #7890
Closed

Destroying an unused Engine crashes #7866

mcooley opened this issue May 17, 2024 · 0 comments · Fixed by #7890
Assignees
Labels
bug Something isn't working vulkan Issues with the Vulkan backend

Comments

@mcooley
Copy link

mcooley commented May 17, 2024

Describe the bug
With the Vulkan backend, creating and immediately destroying an Engine causes an access violation.

To Reproduce

Engine* engine = Engine::Builder()
        .backend(backend::Backend::VULKAN)
        .build();

Engine::destroy(&engine);

Logs
Call stack:

test.dll!vmaDestroyBuffer(VmaAllocator_T * allocator, VkBuffer_T * buffer, VmaAllocation_T * allocation) Line 17234	C++
test.dll!filament::backend::deallocateResource(filament::backend::VulkanResourceAllocator * allocator, filament::backend::VulkanResourceType type, unsigned int id) Line 33	C++
[Inline Frame] test.dll!filament::backend::VulkanResourceManagerImpl<filament::backend::VulkanResourceBase,tsl::robin_set<filament::backend::VulkanResourceBase *,std::hash<filament::backend::VulkanResourceBase *>,std::equal_to<filament::backend::VulkanResourceBase *>,std::allocator<filament::backend::VulkanResourceBase *>,0,tsl::rh::power_of_two_growth_policy<2>>>::derefImpl(filament::backend::VulkanResourceBase * resource) Line 287	C++
test.dll!filament::backend::VulkanResourceManagerImpl<filament::backend::VulkanResourceBase,tsl::robin_set<filament::backend::VulkanResourceBase *,std::hash<filament::backend::VulkanResourceBase *>,std::equal_to<filament::backend::VulkanResourceBase *>,std::allocator<filament::backend::VulkanResourceBase *>,0,tsl::rh::power_of_two_growth_policy<2>>>::clear() Line 270	C++
[Inline Frame] test.dll!filament::backend::VulkanResourceManagerImpl<filament::backend::VulkanResourceBase,tsl::robin_set<filament::backend::VulkanResourceBase *,std::hash<filament::backend::VulkanResourceBase *>,std::equal_to<filament::backend::VulkanResourceBase *>,std::allocator<filament::backend::VulkanResourceBase *>,0,tsl::rh::power_of_two_growth_policy<2>>>::{dtor}() Line 216	C++
[Inline Frame] test.dll!std::default_delete<filament::backend::VulkanCommandBuffer>::operator()(filament::backend::VulkanCommandBuffer *) Line 3139	C++
[Inline Frame] test.dll!std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>::{dtor}() Line 3249	C++
[Inline Frame] test.dll!std::destroy_at(std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>> * const) Line 324	C++
[Inline Frame] test.dll!std::_Default_allocator_traits<std::allocator<std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>>>::destroy(std::allocator<std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>> &) Line 734	C++
[Inline Frame] test.dll!utils::FixedCapacityVector<std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>,std::allocator<std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>>,1>::destroy_non_trivial(std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>> * last, std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>> *) Line 362	C++
[Inline Frame] test.dll!utils::FixedCapacityVector<std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>,std::allocator<std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>>,1>::destroy(std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>> *) Line 354	C++
[Inline Frame] test.dll!utils::FixedCapacityVector<std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>,std::allocator<std::unique_ptr<filament::backend::VulkanCommandBuffer,std::default_delete<filament::backend::VulkanCommandBuffer>>>,1>::{dtor}() Line 126	C++
test.dll!filament::backend::VulkanCommands::~VulkanCommands()	C++
test.dll!filament::backend::VulkanDriver::~VulkanDriver() Line 267	C++
test.dll!filament::backend::VulkanDriver::`scalar deleting destructor'(unsigned int)	C++
test.dll!filament::FEngine::~FEngine() Line 430	C++
test.dll!filament::FEngine::destroy(filament::FEngine * engine) Line 1221	C++
test.dll!filament::Engine::destroy(filament::Engine * * pEngine) Line 70	C++

Filament release: 1.51.8

Desktop:

  • OS: Windows 11
  • GPU: Intel Iris Xe, or SwiftShader
  • Backend: Vulkan
@poweifeng poweifeng self-assigned this May 17, 2024
@poweifeng poweifeng added bug Something isn't working vulkan Issues with the Vulkan backend labels May 17, 2024
poweifeng added a commit that referenced this issue May 29, 2024
poweifeng added a commit that referenced this issue May 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working vulkan Issues with the Vulkan backend
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants