From c43fd88f5997821251bdeeca9700fa18c42049df Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 25 Feb 2020 22:41:09 +0100 Subject: scripting: fix racy crash if loading .run files fails args->client was deallocated if the FDs were closed and nothing referenced it (IPC socket codes detected the closed sockets and asynchronously killed the mpv_handle in args->client). The problem was that args->log depended on it, and was also destroyed. Fix this by duplicating the mp_log. --- player/scripting.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/player/scripting.c b/player/scripting.c index c42706a0b9..81623cb518 100644 --- a/player/scripting.c +++ b/player/scripting.c @@ -328,6 +328,9 @@ const struct mp_scripting mp_scripting_cplugin = { static int load_run(struct mp_script_args *args) { + // The arg->client object might die and with it args->log, so duplicate it. + args->log = mp_log_new(args, args->log, NULL); + int fds[2]; if (!mp_ipc_start_anon_client(args->mpctx->ipc_ctx, args->client, fds)) return -1; -- cgit v1.2.3