Adreno 840 (Snapdragon 8 Elite Gen 5 / Galaxy S26+): SIGBUS in DxvkMemoryAllocator after forcing stock-driver fallback
Device
- Galaxy S26+ SM-S942W, Android 16, kernel 6.12.30-android16
- SoC Snapdragon 8 Elite Gen 5 (SM8850), Adreno 840, stock driver
0842.19.8 (Vulkan 1.3, textureCompressionBC present)
- APK:
GeneralsZH-Android-android-v0.1.0-debug.apk (Beta release android-v0.1.0)
Summary
The bundled Turnip vulkan.ad07xx.so enumerates 0 physical devices on Adreno 840
(DxvkInstance::enumAdapters: Failed to enumerate adapters), so the app dies at
TheDisplay->init().
Forcing the stock-driver path (documented in the renderer-research doc as the rung-1
fallback for Adreno 8xx) by making gxSetupTurnipDriver()'s staged copy fail
(GENERALSX_TURNIP_* env left unset) gets much further: Vulkan + swapchain come up
on the stock driver, all shaders compile, the engine enters the render loop and renders
frames — then crashes with SIGBUS (BUS_ADRALN) in DXVK on the first UI draw.
Crash (stock-driver path)
Fatal signal 7 (SIGBUS), code 1 (BUS_ADRALN), fault addr 0x…47f (4-byte-unaligned), tid SDLThread
#00 __aarch64_ldadd4_acq libdxvk_d3d9.so
#01 dxvk::DxvkMemoryAllocator::allocateMemory(VkMemoryRequirements const&, dxvk::DxvkAllocationInfo const&)+908
#02 dxvk::DxvkMemoryAllocator::createBufferResource(...)+176
#03 dxvk::D3D9ConstantBuffer::AllocSlice()+148
#04 dxvk::D3D9DeviceEx::UpdateFixedFunctionVS()+1396
#05 dxvk::D3D9DeviceEx::PrepareDraw(...)+2512
#06 dxvk::D3D9DeviceEx::DrawIndexedPrimitive(...)+168
#07 dxvk::D3D8Device::DrawIndexedPrimitive(...)+132
#08 DX8Wrapper::Draw(...) libmain.so
#09 Render2DClass::Render()+1444
#10 W3DDisplay::onFlush()+40
#11 W3DDisplayString::draw(...)+636
#12 InGameUI::drawRenderFps(int&, int&)+372
#13 InGameUI::postWindowDraw()+124
#14 W3DInGameUI::draw() … GameClient::update() … SDL3GameEngine::execute() … SDL_main
__aarch64_ldadd4_acq is a 4-byte atomic add; the fault address is not 4-byte aligned,
so an atomic counter inside DxvkMemoryAllocator (DXVK 2.6.0, aarch64 clang 18) is being
placed/accessed unaligned on ARM64.
Also seen (stock-driver path)
Endless Presenter: Got VK_SUBOPTIMAL_KHR, recreating swapchain (portrait 1080x2340
panel, app renders 2340x1080) — surfaceTransform / pre-rotation not handled; the
swapchain is recreated every frame.
Asks
- Wire up the rung-1 stock-driver path for Adreno 8xx so
vulkan.ad07xx.so isn't
force-loaded when it enumerates no adapters (fall back instead of throwing), or ship
an a8xx-capable Turnip.
- The
DxvkMemoryAllocator unaligned-atomic SIGBUS on ARM64.
- Handle
VK_SUBOPTIMAL_KHR / surfaceTransform without a per-frame recreate loop.
Happy to run more captures — full logcat + tombstone available.
Adreno 840 (Snapdragon 8 Elite Gen 5 / Galaxy S26+): SIGBUS in DxvkMemoryAllocator after forcing stock-driver fallback
Device
0842.19.8(Vulkan 1.3,textureCompressionBCpresent)GeneralsZH-Android-android-v0.1.0-debug.apk(Beta release android-v0.1.0)Summary
The bundled Turnip
vulkan.ad07xx.soenumerates 0 physical devices on Adreno 840(
DxvkInstance::enumAdapters: Failed to enumerate adapters), so the app dies atTheDisplay->init().Forcing the stock-driver path (documented in the renderer-research doc as the rung-1
fallback for Adreno 8xx) by making
gxSetupTurnipDriver()'s staged copy fail(
GENERALSX_TURNIP_*env left unset) gets much further: Vulkan + swapchain come upon the stock driver, all shaders compile, the engine enters the render loop and renders
frames — then crashes with SIGBUS (BUS_ADRALN) in DXVK on the first UI draw.
Crash (stock-driver path)
__aarch64_ldadd4_acqis a 4-byte atomic add; the fault address is not 4-byte aligned,so an atomic counter inside
DxvkMemoryAllocator(DXVK 2.6.0, aarch64 clang 18) is beingplaced/accessed unaligned on ARM64.
Also seen (stock-driver path)
Endless
Presenter: Got VK_SUBOPTIMAL_KHR, recreating swapchain(portrait 1080x2340panel, app renders 2340x1080) — surfaceTransform / pre-rotation not handled; the
swapchain is recreated every frame.
Asks
vulkan.ad07xx.soisn'tforce-loaded when it enumerates no adapters (fall back instead of throwing), or ship
an a8xx-capable Turnip.
DxvkMemoryAllocatorunaligned-atomic SIGBUS on ARM64.VK_SUBOPTIMAL_KHR/ surfaceTransform without a per-frame recreate loop.Happy to run more captures — full logcat + tombstone available.