[PATCH i-g-t v2] lib/igt_core: reinitialize log_buffer_mutex in child process
Kamil Konieczny
kamil.konieczny at linux.intel.com
Tue Mar 18 15:59:32 UTC 2025
Hi Zbigniew,
On 2025-03-17 at 12:31:46 +0100, Zbigniew Kempczyński wrote:
> For multi-process scenario intel-allocator is dedicated thread which
> handles clients (children processes) allocations. Main thread which
> spawns children may hit point of time where allocator thread locked
> some mutex. One of it is log_buffer_mutex used in igt_log(). Children
> which would try to call igt_info/warn/debug() family will stuck as
> this mutex is already locked.
>
> Reinitialize this mutex in igt_fork() to avoid deadlocks in allocator
> scenarios.
>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> Cc: Dominik Karol Piątkowski <dominik.karol.piatkowski at intel.com>
> Cc: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
> ---
> lib/igt_core.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/lib/igt_core.c b/lib/igt_core.c
> index 9702a94177..c19689a51e 100644
> --- a/lib/igt_core.c
> +++ b/lib/igt_core.c
> @@ -2600,6 +2600,7 @@ bool __igt_fork(void)
> test_child = true;
> pthread_mutex_init(&print_mutex, NULL);
> pthread_mutex_init(&ahnd_map_mutex, NULL);
> + pthread_mutex_init(&log_buffer_mutex, NULL);
> ahnd_map = igt_map_create(igt_map_hash_64, igt_map_equal_64);
> child_pid = getpid();
> child_tid = -1;
> --
> 2.34.1
>
More information about the igt-dev
mailing list