mpv_thumbnail_script icon indicating copy to clipboard operation
mpv_thumbnail_script copied to clipboard

race condition(?) crashing mpv_thumbnail_script

Open jgreco opened this issue 6 years ago • 2 comments

Sometimes mpv_thumbnail_script_client_osc crashes leaving me with no OSC (but videos continue playing). This is a bit tricky to replicate since I've only noticed it happening when I'm rapidly changing the playing file with loadfile over JSON IPC.

Seemingly what happens is mpv starts to load one file, then shortly later (within a second or so) another loadfile command comes through. It seems to be timing sensitive since rapidly sending back to back loadfile commands won't always trigger this, but I can usually trigger the bug after a few seconds of trying.

In the following logfile snippet there are two loadfile commands initiated by IPC, the first at [0.026] and the second at [0.594]. Shortly after the second at [0.632], mpv_thumbnail_script_client_osc crashes:

[   0.026][v][ipc_0] Client connected
[   0.026][d][cplayer] Run command: loadfile, flags=0, args=[/private/tmp/mpv-test/su-25.webm, replace, ]
...
[   0.045][d][mpv_thumbnail_script_server_2] Loading lua script /Users/john/.config/mpv/scripts/mpv_thumbnail_script_server-2.lua...
[   0.046][d][mpv_thumbnail_script_server_2] loading mp.defaults
[   0.047][d][mpv_thumbnail_script_server_2] loading file /Users/john/.config/mpv/scripts/mpv_thumbnail_script_server-2.lua
[   0.049][d][mpv_thumbnail_script_server_2] reading options for mpv_thumbnail_script 
[   0.054][d][mpv_thumbnail_script_client_osc] Loading lua script /Users/john/.config/mpv/scripts/mpv_thumbnail_script_client_osc.lua...
[   0.054][d][mpv_thumbnail_script_client_osc] loading mp.defaults
[   0.055][d][mpv_thumbnail_script_client_osc] loading file /Users/john/.config/mpv/scripts/mpv_thumbnail_script_client_osc.lua
[   0.064][d][mpv_thumbnail_script_client_osc] reading options for mpv_thumbnail_script 
[   0.064][d][mpv_thumbnail_script_client_osc] reading options for osc 
[   0.064][v][mpv_thumbnail_script_client_osc] lua-settings/osc.conf not found. 
[   0.065][d][mpv_thumbnail_script_client_osc] osc_init 
[   0.076][d][mpv_thumbnail_script_server_1] Loading lua script /Users/john/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua...
[   0.076][d][mpv_thumbnail_script_server_1] loading mp.defaults
[   0.077][d][mpv_thumbnail_script_server_1] loading file /Users/john/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua
[   0.080][d][mpv_thumbnail_script_server_1] reading options for mpv_thumbnail_script 
[   0.089][v][file] Opening /private/tmp/mpv-test/su-25.webm
[   0.104][d][file] Stream opened successfully.
[   0.150][d][mpv_thumbnail_script_server_2] Announcing self to master... 
[   0.150][d][cplayer] Run command: script-message, flags=0, args=[mpv_thumbnail_script-worker, mpv_thumbnail_script_server_2]
[   0.150][d][mpv_thumbnail_script_client_osc] Registered worker mpv_thumbnail_script_server_2 
[   0.150][d][cplayer] Run command: script-message-to, flags=0, args=[mpv_thumbnail_script_server_2, mpv_thumbnail_script-slaved]
[   0.150][d][mpv_thumbnail_script_server_2] Successfully registered with master 
[   0.174][v][cplayer] Opening done: /private/tmp/mpv-test/su-25.webm
[   0.181][d][mpv_thumbnail_script_server_1] Announcing self to master... 
[   0.245][v][cplayer] Starting playback...
[   0.245][d][cplayer] Run command: script-message, flags=0, args=[mpv_thumbnail_script-worker, mpv_thumbnail_script_server_1]
[   0.246][d][mpv_thumbnail_script_client_osc] Registered worker mpv_thumbnail_script_server_1 
[   0.246][d][cplayer] Run command: script-message-to, flags=0, args=[mpv_thumbnail_script_server_1, mpv_thumbnail_script-slaved]
[   0.246][d][mpv_thumbnail_script_server_1] Successfully registered with master 
[   0.593][d][cplayer] Run command: script-message, flags=0, args=[thumbnails-generator-broadcast, gallery_thumbgen_2]
[   0.594][d][cplayer] Run command: script-message, flags=0, args=[thumbnails-generator-broadcast, gallery_thumbgen_1]
[   0.594][d][cplayer] Run command: loadfile, flags=0, args=[/private/tmp/mpv-test/pro-bicycling.webm, replace, ]
[   0.594][d][cplayer] Run command: script-message, flags=0, args=[thumbnails-generator-broadcast, gallery_thumbgen_1]
[   0.594][d][cplayer] Run command: script-message, flags=0, args=[thumbnails-generator-broadcast, gallery_thumbgen_2]
[   0.595][d][mpv_thumbnail_script_client_osc] Gathering video/thumbnail state 
[   0.595][d][cplayer] Run command: script-binding, flags=9, args=[mpv_thumbnail_script_client_osc/__keybinding2]
[   0.595][d][cplayer] Run command: seek, flags=9, args=[60.000000, relative, unused]
[   0.595][d][cplayer] Run command: seek, flags=9, args=[60.000000, relative, unused]
[   0.595][v][mkv] queuing seek to 120.000000
[   0.595][v][mkv] cached range 0: 0.000000 <-> 7.200000
[   0.595][v][cplayer] EOF code: 3  
[   0.595][v][cplayer] Running hook: peerflix_hook/on_unload
[   0.595][d][cplayer] Run command: hook-ack, flags=0, args=[on_unload]
[   0.595][v][vd] Uninit video.
[   0.628][d][cache] request seek: 0 <= to=920807 (cur=917504) <= 983040  
[   0.628][v][cache] Terminating cache...
[   0.628][v][cache] Cache exiting...
[   0.632][v][cplayer] finished playback, success (reason 2)
[   0.632][i][cplayer] 
[   0.632][i][cplayer] Auto-loading profile 'extension.webm'
[   0.632][d][cplayer] Setting option 'loop-file' = 'inf' (flags = 116)
[   0.632][i][cplayer] Playing: /private/tmp/mpv-test/pro-bicycling.webm
[   0.632][v][cplayer] Running hook: ytdl_hook/on_load
[   0.632][d][ytdl_hook] script running time: 4.1000000000069e-05 seconds 
[   0.632][d][cplayer] Run command: hook-ack, flags=0, args=[on_load]
[   0.632][w][mpv_thumbnail_script_client_osc] 
[   0.632][w][mpv_thumbnail_script_client_osc] stack traceback:
[   0.633][w][mpv_thumbnail_script_client_osc] 	...nfig/mpv/scripts/mpv_thumbnail_script_client_osc.lua:942: in function 'get_thumbnail_size'
[   0.633][w][mpv_thumbnail_script_client_osc] 	...nfig/mpv/scripts/mpv_thumbnail_script_client_osc.lua:887: in function 'update_state'
[   0.633][w][mpv_thumbnail_script_client_osc] 	...nfig/mpv/scripts/mpv_thumbnail_script_client_osc.lua:869: in function 'on_video_change'
[   0.633][w][mpv_thumbnail_script_client_osc] 	...nfig/mpv/scripts/mpv_thumbnail_script_client_osc.lua:1227: in function 'prop'
[   0.633][w][mpv_thumbnail_script_client_osc] 	mp.defaults:365: in function 'handler'
[   0.633][w][mpv_thumbnail_script_client_osc] 	mp.defaults:459: in function 'call_event_handlers'
[   0.633][w][mpv_thumbnail_script_client_osc] 	mp.defaults:496: in function 'dispatch_events'
[   0.633][w][mpv_thumbnail_script_client_osc] 	mp.defaults:452: in function <mp.defaults:451>
[   0.633][w][mpv_thumbnail_script_client_osc] 	[C]: ?
[   0.633][w][mpv_thumbnail_script_client_osc] 	[C]: ?
[   0.633][v][cplayer] Running hook: txt_hook/on_load
[   0.633][f][mpv_thumbnail_script_client_osc] Lua error: ...nfig/mpv/scripts/mpv_thumbnail_script_client_osc.lua:942: attempt to index local 'video_dec_params' (a nil value)
[   0.633][v][file] Opening /private/tmp/mpv-test/pro-bicycling.webm
[   0.636][v][mpv_thumbnail_script_client_osc] Exiting...

jgreco avatar May 13 '18 22:05 jgreco

I'm getting this one a lot during normal use, even when I'm not doing anything crazy with external scripts. Just changing videos a few times triggers it.

tonycpsu avatar Nov 28 '19 02:11 tonycpsu

Try #54

blankname avatar Mar 04 '20 20:03 blankname