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

SDL_Camera intermittently hangs on CloseCamera when using Pipewire backend #10842

Open
ambeloe opened this issue Sep 14, 2024 · 0 comments
Open
Milestone

Comments

@ambeloe
Copy link

ambeloe commented Sep 14, 2024

This happens about half of the time, and it seems that the pipewire thread never returns and causes WaitThread to hang indefinitely. Unplugging the camera causes WaitThread to return and fixes the hang.

commit: 16ff750

Main thread backtrace

#0  0x00007ffff749fa19 in ?? () from /usr/lib/libc.so.6
#1  0x00007ffff74a51a3 in ?? () from /usr/lib/libc.so.6
#2  0x00007ffff7cef1d1 in SDL_SYS_WaitThread (thread=0x5555558d3e20) at /home/user/Projects/C/Camview/submodules/SDL/src/thread/pthread/SDL_systhread.c:279
#3  0x00007ffff7b2e498 in SDL_WaitThread_REAL (thread=0x5555558d3e20, status=0x0) at /home/user/Projects/C/Camview/submodules/SDL/src/thread/SDL_thread.c:450
#4  0x00007ffff7a57060 in ClosePhysicalCamera (device=0x5555557275b0) at /home/user/Projects/C/Camview/submodules/SDL/src/camera/SDL_camera.c:238
#5  0x00007ffff7a58376 in SDL_CloseCamera_REAL (camera=0x5555557275b0) at /home/user/Projects/C/Camview/submodules/SDL/src/camera/SDL_camera.c:650
#6  0x00007ffff7a68e27 in SDL_CloseCamera (a=0x5555557275b0) at /home/user/Projects/C/Camview/submodules/SDL/src/dynapi/SDL_dynapi_procs.h:108
#7  0x0000555555558f02 in SDL_AppIterate (appstate=0x5555557269a0) at /home/user/Projects/C/Camview/main.cpp:159
#8  0x00007ffff7aac776 in SDL_IterateMainCallbacks (pump_events=true) at /home/user/Projects/C/Camview/submodules/SDL/src/main/SDL_main_callbacks.c:125
#9  0x00007ffff7d149be in SDL_EnterAppMainCallbacks_REAL (argc=1, argv=0x7fffffffe058, appinit=0x555555558923 <SDL_AppInit(void**, int, char**)>, appiter=0x555555558d8f <SDL_AppIterate(void*)>, appevent=0x555555558c18 <SDL_AppEvent(void*, SDL_Event*)>, appquit=0x5555555592d5 <SDL_AppQuit(void*)>) at /home/user/Projects/C/Camview/submodules/SDL/src/main/generic/SDL_sysmain_callbacks.c:48
#10 0x00007ffff7a69cfa in SDL_EnterAppMainCallbacks (a=1, b=0x7fffffffe058, c=0x555555558923 <SDL_AppInit(void**, int, char**)>, d=0x555555558d8f <SDL_AppIterate(void*)>, e=0x555555558c18 <SDL_AppEvent(void*, SDL_Event*)>, f=0x5555555592d5 <SDL_AppQuit(void*)>) at /home/user/Projects/C/Camview/submodules/SDL/src/dynapi/SDL_dynapi_procs.h:204
#11 0x00005555555588f5 in SDL_main (argc=1, argv=0x7fffffffe058) at /home/user/Projects/C/Camview/submodules/SDL/include/SDL3/SDL_main_impl.h:59
#12 0x00007ffff7aac830 in SDL_RunApp_REAL (argc=1, argv=0x7fffffffe058, mainFunction=0x5555555588b9 <SDL_main(int, char**)>, reserved=0x0) at /home/user/Projects/C/Camview/submodules/SDL/src/main/SDL_runapp.c:40
#13 0x00007ffff7a63064 in SDL_RunApp_DEFAULT (a=1, b=0x7fffffffe058, c=0x5555555588b9 <SDL_main(int, char**)>, d=0x0) at /home/user/Projects/C/Camview/submodules/SDL/src/dynapi/SDL_dynapi_procs.h:783
#14 0x00007ffff7a6eb50 in SDL_RunApp (a=1, b=0x7fffffffe058, c=0x5555555588b9 <SDL_main(int, char**)>, d=0x0) at /home/user/Projects/C/Camview/submodules/SDL/src/dynapi/SDL_dynapi_procs.h:783
#15 0x0000555555558920 in main (argc=1, argv=0x7fffffffe058) at /home/user/Projects/C/Camview/submodules/SDL/include/SDL3/SDL_main_impl.h:144
#16 0x00007ffff7434e08 in ?? () from /usr/lib/libc.so.6
#17 0x00007ffff7434ecc in __libc_start_main () from /usr/lib/libc.so.6
#18 0x00005555555587e5 in _start ()

Camera thread backtrace

#0  0x00007ffff749fa19 in ?? () from /usr/lib/libc.so.6
#1  0x00007ffff74a2479 in pthread_cond_wait () from /usr/lib/libc.so.6
#2  0x00007ffff71c77a9 in pw_thread_loop_wait () from /usr/lib/libpipewire-0.3.so.0
#3  0x00007ffff7c69e38 in PIPEWIRECAMERA_WaitDevice (device=0x5555557275b0) at /home/user/Projects/C/Camview/submodules/SDL/src/camera/pipewire/SDL_camera_pipewire.c:553
#4  0x00007ffff7a58da9 in CameraThread (devicep=0x5555557275b0) at /home/user/Projects/C/Camview/submodules/SDL/src/camera/SDL_camera.c:937
#5  0x00007ffff7b2e092 in SDL_RunThread (thread=0x5555558d3e20) at /home/user/Projects/C/Camview/submodules/SDL/src/thread/SDL_thread.c:323
#6  0x00007ffff7ceed5b in RunThread (data=0x5555558d3e20) at /home/user/Projects/C/Camview/submodules/SDL/src/thread/pthread/SDL_systhread.c:69
#7  0x00007ffff74a339d in ?? () from /usr/lib/libc.so.6
#8  0x00007ffff752849c in ?? () from /usr/lib/libc.so.6
@slouken slouken added this to the 3.2.0 milestone Sep 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants