<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - does not work with xserver 1.18.3 : core dump at kgem->retire() + different PixmapSyncDirtyHelper prototype"
href="https://bugs.freedesktop.org/show_bug.cgi?id=95140">95140</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>does not work with xserver 1.18.3 : core dump at kgem->retire() + different PixmapSyncDirtyHelper prototype
</td>
</tr>
<tr>
<th>Product</th>
<td>xorg
</td>
</tr>
<tr>
<th>Version</th>
<td>git
</td>
</tr>
<tr>
<th>Hardware</th>
<td>Other
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>major
</td>
</tr>
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Component</th>
<td>Driver/intel
</td>
</tr>
<tr>
<th>Assignee</th>
<td>chris@chris-wilson.co.uk
</td>
</tr>
<tr>
<th>Reporter</th>
<td>jason.vas.dias@gmail.com
</td>
</tr>
<tr>
<th>QA Contact</th>
<td>intel-gfx-bugs@lists.freedesktop.org
</td>
</tr></table>
<p>
<div>
<pre>Having checked out & built the latest xf86-video-intel source code from git:
$ git tag | while read tag; do echo $(git show --format='COMMIT_TIME:%ct'
"$tag" | sed -n '/^COMMIT_TIME:/{s/^COMMIT_TIME://;p;}') "$tag"; done | sort -n
| tail -n 1
1419172872 2.99.917
$ git checkout -f 2.99.917
( which is from rather a long time ago - 2014-12-21 - but is latest version
in GIT as of writing : 2016-04-25)
, against latest version of Xorg server from GIT : 1.18.3 ,
and all of its dependencies from their latest GIT versions,
it initially failed to build because evidently the prototype of
the server's PixmapSyncDirtyHelper has changed:
$ diff -U0 src/uxa/intel_driver.c~ src/uxa/intel_driver.c
--- src/uxa/intel_driver.c~ 2016-04-25 23:29:59.385985184 +0000
+++ src/uxa/intel_driver.c 2016-04-25 19:12:15.635826279 +0000
@@ -645 +645 @@
- PixmapSyncDirtyHelper(dirty, &pixregion);
+ PixmapSyncDirtyHelper(dirty/*, &pixregion*/);
, and once it did build , then it generates a segmentation violation (SIGSEGV)
and would core dump if ulimit allows - here is the gdb stack trace of the
Xorg server version 1.18.3, with which this version of xf86-video intel seems
not to be fully compatible:
<quote><pre>
GNU gdb (GDB) 7.11
...
Reading symbols from /usr/build/linux/xserver/hw/xfree86/Xorg...done.
[New LWP 4538]
[New LWP 4544]
[New LWP 4543]
[New LWP 4545]
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib64/libthread_db.so.1".
Core was generated by `Xorg -logverbose :0 vt04'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007f93f8f4b1f8 in __GI_raise (sig=sig@entry=6) at
../sysdeps/unix/sysv/linux/raise.c:54
54 return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
[Current thread is 1 (Thread 0x7f93facf38c0 (LWP 4538))]
(gdb) t a a bt
Thread 4 (Thread 0x7f93f31cd700 (LWP 4545)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at
../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f93f5370761 in __run__ (arg=0x1add7d0) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/sna_threads.c:70
#2 0x00007f93f8d02394 in start_thread (arg=0x7f93f31cd700) at
pthread_create.c:333
#3 0x00007f93f8fff8ed in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Thread 3 (Thread 0x7f93f41cf700 (LWP 4543)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at
../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f93f5370761 in __run__ (arg=0x1add6f0) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/sna_threads.c:70
#2 0x00007f93f8d02394 in start_thread (arg=0x7f93f41cf700) at
pthread_create.c:333
#3 0x00007f93f8fff8ed in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Thread 2 (Thread 0x7f93f39ce700 (LWP 4544)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at
../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f93f5370761 in __run__ (arg=0x1add760) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/sna_threads.c:70
#2 0x00007f93f8d02394 in start_thread (arg=0x7f93f39ce700) at
pthread_create.c:333
#3 0x00007f93f8fff8ed in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109
Thread 1 (Thread 0x7f93facf38c0 (LWP 4538)):
#0 0x00007f93f8f4b1f8 in __GI_raise (sig=sig@entry=6) at
../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007f93f8f4c64a in __GI_abort () at abort.c:89
#2 0x0000000000585ade in OsAbort () at
/usr/os_src/xorg/xserver/os/utils.c:1408
#3 0x000000000047568c in ddxGiveUp (error=error@entry=EXIT_ERR_ABORT) at
/usr/os_src/xorg/xserver/hw/xfree86/common/xf86Init.c:1066
#4 0x000000000047573a in AbortDDX (error=error@entry=EXIT_ERR_ABORT) at
/usr/os_src/xorg/xserver/hw/xfree86/common/xf86Init.c:1110
#5 0x000000000058aff2 in AbortServer () at
/usr/os_src/xorg/xserver/os/log.c:874
#6 0x000000000058bda8 in FatalError (f=f@entry=0x5b7970 "Caught signal %d
(%s). Server aborting\n") at /usr/os_src/xorg/xserver/os/log.c:1015
#7 0x00000000005835ce in OsSigHandler (signo=11, sip=<optimized out>,
unused=<optimized out>) at /usr/os_src/xorg/xserver/os/osinit.c:150
#8 <signal handler called>
#9 0x0000000000000000 in ?? ()
#10 0x00007f93f52f0254 in kgem_retire (kgem=kgem@entry=0x7f93fac5a000) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:2789
#11 0x00007f93f52f1cdb in kgem_cleanup_cache (kgem=0x7f93fac5a000) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:4023
#12 0x00007f93f52f1e38 in __kgem_bo_map__cpu (kgem=kgem@entry=0x7f93fac5a000,
bo=0x1adf330) at /usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:536
#13 0x00007f93f52f1e67 in kgem_bo_map__cpu (kgem=kgem@entry=0x7f93fac5a000,
bo=<optimized out>) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:6347
#14 0x00007f93f52f5adb in kgem_bo_map__cpu (bo=<optimized out>,
kgem=0x7f93fac5a000) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:1496
#15 kgem_new_batch (kgem=kgem@entry=0x7f93fac5a000) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:1471
#16 0x00007f93f52f6408 in kgem_init (kgem=kgem@entry=0x7f93fac5a000,
fd=<optimized out>, dev=<optimized out>, gen=gen@entry=61) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:1631
#17 0x00007f93f533d5a9 in sna_pre_init (scrn=0x1add040, probe=<optimized out>)
at /usr/os_src/xorg/driver/xf86-video-intel/src/sna/sna_driver.c:651
#18 0x000000000047741b in InitOutput (pScreenInfo=pScreenInfo@entry=0x8207a0
<screenInfo>, argc=argc@entry=4, argv=argv@entry=0x7ffcca8481e8) at
/usr/os_src/xorg/xserver/hw/xfree86/common/xf86Init.c:583
#19 0x0000000000438694 in dix_main (argc=4, argv=0x7ffcca8481e8,
envp=<optimized out>) at /usr/os_src/xorg/xserver/dix/main.c:204
#20 0x00007f93f8f38710 in __libc_start_main (main=0x424030 <main>, argc=4,
argv=0x7ffcca8481e8, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7ffcca8481d8) at ../csu/libc-start.c:289
#21 0x0000000000424069 in _start () at ../sysdeps/x86_64/start.S:118
(gdb) up
#1 0x00007f93f8f4c64a in __GI_abort () at abort.c:89
89 raise (SIGABRT);
(gdb) up
#2 0x0000000000585ade in OsAbort () at
/usr/os_src/xorg/xserver/os/utils.c:1408
1408 abort();
(gdb) up
#3 0x000000000047568c in ddxGiveUp (error=error@entry=EXIT_ERR_ABORT) at
/usr/os_src/xorg/xserver/hw/xfree86/common/xf86Init.c:1066
1066 OsAbort();
(gdb) up
#4 0x000000000047573a in AbortDDX (error=error@entry=EXIT_ERR_ABORT) at
/usr/os_src/xorg/xserver/hw/xfree86/common/xf86Init.c:1110
1110 ddxGiveUp(error);
(gdb) up
#5 0x000000000058aff2 in AbortServer () at
/usr/os_src/xorg/xserver/os/log.c:874
874 AbortDDX(EXIT_ERR_ABORT);
(gdb) up
#6 0x000000000058bda8 in FatalError (f=f@entry=0x5b7970 "Caught signal %d
(%s). Server aborting\n") at /usr/os_src/xorg/xserver/os/log.c:1015
1015 AbortServer();
(gdb) up
#7 0x00000000005835ce in OsSigHandler (signo=11, sip=<optimized out>,
unused=<optimized out>) at /usr/os_src/xorg/xserver/os/osinit.c:150
150 FatalError("Caught signal %d (%s). Server aborting\n",
(gdb) up
#8 <signal handler called>
(gdb) u
The program is not being run.
(gdb) up
#9 0x0000000000000000 in ?? ()
(gdb) up
#10 0x00007f93f52f0254 in kgem_retire (kgem=kgem@entry=0x7f93fac5a000) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:2789
2789 kgem->retire(kgem);
(gdb) p kgem-retire
No symbol "retire" in current context.
(gdb) p kgem->retire
$1 = (void (*)(struct kgem *)) 0x0
(gdb) q
</pre></quote>
As you can see, the kgem->retire function pointer is NULL.
The above leads me to suspect this package is no longer maintained /
kept working with recent versions of the Xorg software stack - is this
the case ?
Any suggestions how to fix to make it work with latest Xserver 1.18.3 ?
If I just make the modification to sna/kgem.c :
+++ if( kgem->retire != NULL )
kgem->retire(kgem);
rather than letting it core dump, then the Xserver hangs and
never goes into graphics mode - it wrote this line to the log:
[ 809.057] (II) GLX: Initialized DRI2 GL provider for screen 0
but never displays any graphics or proceeds any farther.
Is there a recommended X-server version this version of xf86-video-intel
is known to work with ?</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
</ul>
</body>
</html>