Using 2 different sensors in Argus is unstable

Hello,

I’m using 2 different sensors in 2 CaptureSessions under one CameraProvider, when run one camera at a time it never fails, but when run together it works about 5 times out of 6, it always fails with this error:

[ 2712.261882] host1x 13e10000.host1x: cdma_handle_timeout: timeout: 22 (15700000.vi_0) clientid 454, HW thresh 161, done 162
[ 2712.272941] ---- mlocks ----

[ 2712.272971] ---- syncpts ----
[ 2712.272989] id 11 (15600000.isp__visiond_0) min 2046 max 2046 refs 1 (previous client : 15600000.isp__visiond_0)
[ 2712.272993] id 12 (15600000.isp__visiond_1) min 1743 max 1743 refs 1 (previous client : 15600000.isp__visiond_1)
[ 2712.272997] id 13 (15600000.isp__visiond_2) min 1383 max 1383 refs 1 (previous client : 15600000.isp__visiond_2)
[ 2712.273001] id 14 (15600000.isp__visiond_3) min 1383 max 1383 refs 1 (previous client : 15600000.isp__visiond_3)
[ 2712.273004] id 15 (15600000.isp__visiond_4) min 7843 max 7843 refs 1 (previous client : 15600000.isp__visiond_4)
[ 2712.273008] id 16 (15600000.isp__visiond_5) min 3665 max 3665 refs 1 (previous client : 15600000.isp__visiond_5)
[ 2712.273011] id 17 (gp10b_507) min 360 max 360 refs 1 (previous client : gp10b_507)
[ 2712.273015] id 18 (gp10b_506) min 1410 max 1410 refs 1 (previous client : gp10b_506)
[ 2712.273018] id 19 (gp10b_505) min 390 max 390 refs 1 (previous client : gp10b_505)
[ 2712.273023] id 22 (15700000.vi_0) min 161 max 168 refs 9 (previous client : 15700000.vi_0)

[ 2712.273625] ---- channels ----
[ 2712.273636] 
               channel 2 - 15820000.se

[ 2712.273638] NvHost basic channel registers:
[ 2712.273641] CMDFIFO_STAT_0:  00002040
[ 2712.273643] CMDFIFO_RDATA_0: 04202050
[ 2712.273647] CMDP_OFFSET_0:   00000000
[ 2712.273650] CMDP_CLASS_0:    00000000
[ 2712.273652] CHANNELSTAT_0:   00000000
[ 2712.273671] The CDMA sync queue is empty.

[ 2712.273676] 
               channel 3 - 15830000.se

[ 2712.273677] NvHost basic channel registers:
[ 2712.273680] CMDFIFO_STAT_0:  00002040
[ 2712.273683] CMDFIFO_RDATA_0: 0a024c28
[ 2712.273687] CMDP_OFFSET_0:   00000000
[ 2712.273689] CMDP_CLASS_0:    00000000
[ 2712.273692] CHANNELSTAT_0:   00000000
[ 2712.273694] The CDMA sync queue is empty.

[ 2712.273698] 
               channel 4 - 15840000.se

[ 2712.273699] NvHost basic channel registers:
[ 2712.273702] CMDFIFO_STAT_0:  00002040
[ 2712.273704] CMDFIFO_RDATA_0: 02300840
[ 2712.273708] CMDP_OFFSET_0:   00000000
[ 2712.273713] CMDP_CLASS_0:    00000000
[ 2712.273715] CHANNELSTAT_0:   00000000
[ 2712.273717] The CDMA sync queue is empty.

[ 2712.273722] 
               channel 1 - 15700000.vi

[ 2712.273723] NvHost basic channel registers:
[ 2712.273725] CMDFIFO_STAT_0:  00000000
[ 2712.273728] CMDFIFO_RDATA_0: 00000000
[ 2712.273731] CMDP_OFFSET_0:   00000000
[ 2712.273734] CMDP_CLASS_0:    00000000
[ 2712.273736] CHANNELSTAT_0:   00000004
[ 2712.273740] 
               ffffffc0ea351400: JOB, syncpt_id=22, syncpt_val=162, first_get=00000d10, timeout=10000, num_slots=4
[ 2712.273746]     GATHER at ffb08000+0000, 16 words
[ 2712.273748] 1110000d 
[ 2712.273750] 00000020 
[ 2712.273752] 00000020 
[ 2712.273753] 00000020 
[ 2712.273755] 00000020 
[ 2712.273756] 00000020 
[ 2712.273757] 00000020 
[ 2712.273759] 00000002 
[ 2712.273760] 00000002 
[ 2712.273762] 00000002 
[ 2712.273763] 00000002 
[ 2712.273765] 00000002 
[ 2712.273766] 00000002 
[ 2712.273767] 00000000 
[ 2712.273769] 11440001 
[ 2712.273770] 00543210 

[ 2712.273775]     GATHER at ffb08000+0040, 2 words
[ 2712.273776] 20000001 
[ 2712.273778] 00000016 


[ 2712.273783] 
               ---- host general irq ----

[ 2712.273785] sync_intc0mask = 0x00000001
[ 2712.273788] sync_intmask = 0x50000003
[ 2712.273789] 
               ---- host syncpt irq mask ----

[ 2712.273790] 
               ---- host syncpt irq status ----

[ 2712.273793] syncpt_thresh_cpu0_int_status(0) = 0x00000000
[ 2712.273796] syncpt_thresh_cpu0_int_status(1) = 0x00000000
[ 2712.273799] syncpt_thresh_cpu0_int_status(2) = 0x00000000
[ 2712.273801] syncpt_thresh_cpu0_int_status(3) = 0x00000000
[ 2712.273804] syncpt_thresh_cpu0_int_status(4) = 0x00000000
[ 2712.273806] syncpt_thresh_cpu0_int_status(5) = 0x00000000
[ 2712.273809] syncpt_thresh_cpu0_int_status(6) = 0x00000000
[ 2712.273811] syncpt_thresh_cpu0_int_status(7) = 0x00000000
[ 2712.273814] syncpt_thresh_cpu0_int_status(8) = 0x00000000
[ 2712.273816] syncpt_thresh_cpu0_int_status(9) = 0x00000000
[ 2712.273819] syncpt_thresh_cpu0_int_status(10) = 0x00000000
[ 2712.273821] syncpt_thresh_cpu0_int_status(11) = 0x00000000
[ 2712.273824] syncpt_thresh_cpu0_int_status(12) = 0x00000000
[ 2712.273827] syncpt_thresh_cpu0_int_status(13) = 0x00000000
[ 2712.273829] syncpt_thresh_cpu0_int_status(14) = 0x00000000
[ 2712.273832] syncpt_thresh_cpu0_int_status(15) = 0x00000000
[ 2712.273834] syncpt_thresh_cpu0_int_status(16) = 0x00000000
[ 2712.273837] syncpt_thresh_cpu0_int_status(17) = 0x00000000
[ 2712.273846] tegra-vi4 15700000.vi:     SYNCPT_ID   22
[ 2712.273848] tegra-vi4 15700000.vi:     SYNCPT_VAL  162
[ 2712.273851] tegra-vi4 15700000.vi:     FIRST_GET   0xd10
[ 2712.273853] tegra-vi4 15700000.vi:     TIMEOUT     10000
[ 2712.273855] tegra-vi4 15700000.vi:     NUM_SLOTS   4
[ 2712.273857] tegra-vi4 15700000.vi:     NUM_HANDLES 1
[ 2712.273863] tegra-vi4 15700000.vi:     SYNCPT_ID   22
[ 2712.273865] tegra-vi4 15700000.vi:     SYNCPT_VAL  163
[ 2712.273867] tegra-vi4 15700000.vi:     FIRST_GET   0xd30
[ 2712.273869] tegra-vi4 15700000.vi:     TIMEOUT     10000
[ 2712.273872] tegra-vi4 15700000.vi:     NUM_SLOTS   4
[ 2712.273874] tegra-vi4 15700000.vi:     NUM_HANDLES 1
[ 2712.273878] tegra-vi4 15700000.vi:     SYNCPT_ID   22
[ 2712.273880] tegra-vi4 15700000.vi:     SYNCPT_VAL  164
[ 2712.273882] tegra-vi4 15700000.vi:     FIRST_GET   0xd50
[ 2712.273884] tegra-vi4 15700000.vi:     TIMEOUT     10000
[ 2712.273886] tegra-vi4 15700000.vi:     NUM_SLOTS   4
[ 2712.273888] tegra-vi4 15700000.vi:     NUM_HANDLES 1
[ 2712.273893] tegra-vi4 15700000.vi:     SYNCPT_ID   22
[ 2712.273895] tegra-vi4 15700000.vi:     SYNCPT_VAL  165
[ 2712.273897] tegra-vi4 15700000.vi:     FIRST_GET   0xd70
[ 2712.273898] tegra-vi4 15700000.vi:     TIMEOUT     10000
[ 2712.273900] tegra-vi4 15700000.vi:     NUM_SLOTS   4
[ 2712.273902] tegra-vi4 15700000.vi:     NUM_HANDLES 1
[ 2712.273907] tegra-vi4 15700000.vi:     SYNCPT_ID   22
[ 2712.273909] tegra-vi4 15700000.vi:     SYNCPT_VAL  166
[ 2712.273911] tegra-vi4 15700000.vi:     FIRST_GET   0xd90
[ 2712.273913] tegra-vi4 15700000.vi:     TIMEOUT     10000
[ 2712.273915] tegra-vi4 15700000.vi:     NUM_SLOTS   4
[ 2712.273917] tegra-vi4 15700000.vi:     NUM_HANDLES 1
[ 2712.273922] tegra-vi4 15700000.vi:     SYNCPT_ID   22
[ 2712.273924] tegra-vi4 15700000.vi:     SYNCPT_VAL  167
[ 2712.273925] tegra-vi4 15700000.vi:     FIRST_GET   0xdb0
[ 2712.273927] tegra-vi4 15700000.vi:     TIMEOUT     10000
[ 2712.273929] tegra-vi4 15700000.vi:     NUM_SLOTS   4
[ 2712.273931] tegra-vi4 15700000.vi:     NUM_HANDLES 1
[ 2712.273936] tegra-vi4 15700000.vi:     SYNCPT_ID   22
[ 2712.273938] tegra-vi4 15700000.vi:     SYNCPT_VAL  168
[ 2712.273940] tegra-vi4 15700000.vi:     FIRST_GET   0xdd0
[ 2712.273942] tegra-vi4 15700000.vi:     TIMEOUT     10000
[ 2712.273944] tegra-vi4 15700000.vi:     NUM_SLOTS   4
[ 2712.273946] tegra-vi4 15700000.vi:     NUM_HANDLES 1

Is there anything specific that has to be done when using 2 different sensors in argus?

No, it could be interference each others cause the problem.

I think the problem is that if the outputstream is not in the CONNECTING state before the capture starts it fails, but I don’t see a way to check the consumer state from the producer side. So if the consumer thread is too slow to create the frameconsumer it fails. I solved it by sleeping a few hundred milliseconds before starting capture, but it seems like it shouldn’t behave like this.

In short the capture shouldn’t fail because there’s no consumer. It should just keep capturing and throw away the frames until a consumer is connected