Include the following details while filing a bug report (edit as applicable):
- Issue category: ARMeshManager/Mesh Generator
- Device type & OS version: Android
- Host machine & OS version: Mac
- Issue Environment : On Device
- Xcode version:
- ARDK version: 2.5.2
- Unity version: Unity 2021.3.29f1
I hope it helps who are using URP and struggling with a crash on device when generating meshes.
A simple workaround to resolve the crash is to turn off ‘Use SRP Batcher’ option in ArdkUrpAsset.
The option is usually ON by default.
Bug reproduction steps:
With URP,
-
Use a material with the following custom shader created by shadergraph for AR Mesh
GeneratedFromGraph-ShadowReceiverMod.shader (64.7 KB) -
Select ArdkUrpAsset
-
Switch Inspector mode to Debug
-
Search ‘Use SRP Batcher’, by default it is usually ON.
- If the option is ON, app crashes 100% while generating mesh via ARMeshManager.
- Stacktrace shows it happens at GfxDeviceGLES::DrawBuffersBatchMode
- I tested ‘Dyanmic Batching’ option and a relevant Tag - ‘Disable batching’ in some shader, it doesn’t matter. It is nothing to do with Dynamic batching, but it’s turned out to be SRP Batcher.
Crash log is as follows.
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/bluejay/bluejay:13/TQ3A.230805.001/10316531:user/release-keys'
Revision: 'MP1.0'
ABI: 'arm64'
Timestamp: 2023-08-29 14:50:18.669731330+0800
Process uptime: 72s
Cmdline: {*** bundle_identifier ***}
pid: 29110, tid: 29296, name: Thread-8 >>> {*** bundle_identifier ***} <<<
uid: 10380
tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x0000007170400000
x0 0000005efe084840 x1 00000071703fffe0 x2 00000000000000e0 x3 0000005efe084980
x4 0000007170400110 x5 0000005efe084af0 x6 0000000000000000 x7 0000000000000000
x8 0000000000000000 x9 0000000000000000 x10 0000000000000000 x11 0000000000000000
x12 0000000000000000 x13 0000000000000000 x14 00000071801877f0 x15 0000000000000023
x16 00000072adc7acf0 x17 00000075d6bc2f20 x18 00000071abd18000 x19 0000000000000010
x20 0000007246dd52c0 x21 0000000000000022 x22 00000071703ffe60 x23 0000005efe084840
x24 00000000000002b0 x25 b40000741a52cc50 x26 00000000000002b0 x27 00000071d0457670
x28 00000071ac848950 x29 00000000000000a0
lr 00000072ad146c0c sp 00000071ac848690 pc 00000075d6bc2ecc pst 0000000020001000
backtrace:
#00 pc 000000000004eecc /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+284) (BuildId: dc4001c2ef2dfc23467040797a96840c)
#01 pc 000000000193cc08 /data/app/~~tj3lv7b-WWtkzM1sYJ1rVw==/{*** bundle_identifier ***}-EdsH-Q3L1jgEYnGIt8Obpw==/lib/arm64/libunity.so (**GfxDeviceGLES::DrawBuffersBatchMode**(GfxBatchHeader const&)+184) (BuildId: 8ceca445f342b58f)
#02 pc 0000000001b42070 /data/app/~~tj3lv7b-WWtkzM1sYJ1rVw==/{*** bundle_identifier ***}-EdsH-Q3L1jgEYnGIt8Obpw==/lib/arm64/libunity.so (GfxDeviceWorker::RunCommand(ThreadedStreamBuffer&)+29236) (BuildId: 8ceca445f342b58f)
#03 pc 0000000001b3add8 /data/app/~~tj3lv7b-WWtkzM1sYJ1rVw==/{*** bundle_identifier ***}-EdsH-Q3L1jgEYnGIt8Obpw==/lib/arm64/libunity.so (GfxDeviceWorker::RunExt(ThreadedStreamBuffer&)+84) (BuildId: 8ceca445f342b58f)
#04 pc 0000000001b3ad78 /data/app/~~tj3lv7b-WWtkzM1sYJ1rVw==/{*** bundle_identifier ***}-EdsH-Q3L1jgEYnGIt8Obpw==/lib/arm64/libunity.so (GfxDeviceWorker::Run()+140) (BuildId: 8ceca445f342b58f)
#05 pc 0000000001b3aafc /data/app/~~tj3lv7b-WWtkzM1sYJ1rVw==/{*** bundle_identifier ***}-EdsH-Q3L1jgEYnGIt8Obpw==/lib/arm64/libunity.so (GfxDeviceWorker::RunGfxDeviceWorker(void*)+4) (BuildId: 8ceca445f342b58f)
#06 pc 0000000001069f64 /data/app/~~tj3lv7b-WWtkzM1sYJ1rVw==/{*** bundle_identifier ***}-EdsH-Q3L1jgEYnGIt8Obpw==/lib/arm64/libunity.so (Thread::RunThreadWrapper(void*)+1048) (BuildId: 8ceca445f342b58f)
#07 pc 00000000000c226c /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+204) (BuildId: dc4001c2ef2dfc23467040797a96840c)
#08 pc 0000000000054a30 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: dc4001c2ef2dfc23467040797a96840c)