Bug 103653

Summary: Unreal segfault since gallium/u_threaded: avoid syncs for get_query_result
Product: Mesa Reporter: Andy Furniss <adf.lists>
Component: Drivers/Gallium/radeonsiAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact: Default DRI bug account <dri-devel>
Severity: normal    
Priority: medium CC: nhaehnle
Version: git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Andy Furniss 2017-11-09 18:28:32 UTC
R9 285 Tonga, since

commit 244536d3d6b40c1763d1e2b3e7676665afa69101
Author: Nicolai Hähnle <nicolai.haehnle@amd.com>
Date:   Sun Oct 22 17:38:51 2017 +0200

    gallium/u_threaded: avoid syncs for get_query_result
    
    Queries should still get marked as flushed when flushes are executed
    asynchronously in the driver thread.
    
    To this end, the management of the unflushed_queries list is moved into
    the driver thread.

I get a segfault starting Unreal Elemental demo or unreal tournament.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe34f5700 (LWP 7403)]
tc_call_end_query (pipe=0x5301430, payload=0x54c2a48) at util/u_threaded_context.c:374
374        if (!tq->head_unflushed.next)
(gdb) bt
#0  tc_call_end_query (pipe=0x5301430, payload=0x54c2a48) at util/u_threaded_context.c:374
#1  0x00007ffff11bfdaf in tc_batch_execute (job=job@entry=0x54c27c0, thread_index=thread_index@entry=0) at util/u_threaded_context.c:96
#2  0x00007ffff1083830 in util_queue_thread_func (input=input@entry=0x4c37fe0) at u_queue.c:271
#3  0x00007ffff10834d7 in impl_thrd_routine (p=<optimized out>) at ../../include/c11/threads_posix.h:87
#4  0x00007ffff7bc5434 in start_thread () from /lib/libpthread.so.0
#5  0x00007ffff6a1206d in clone () from /lib/libc.so.6

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.