[Bug 95140] New: does not work with xserver 1.18.3 : core dump at kgem->retire() + different PixmapSyncDirtyHelper prototype

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Apr 25 23:56:58 UTC 2016


https://bugs.freedesktop.org/show_bug.cgi?id=95140

            Bug ID: 95140
           Summary: does not work with xserver 1.18.3 : core dump at
                    kgem->retire() + different PixmapSyncDirtyHelper
                    prototype
           Product: xorg
           Version: git
          Hardware: Other
                OS: All
            Status: NEW
          Severity: major
          Priority: medium
         Component: Driver/intel
          Assignee: chris at chris-wilson.co.uk
          Reporter: jason.vas.dias at gmail.com
        QA Contact: intel-gfx-bugs at lists.freedesktop.org

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 at 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 at 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 at entry=EXIT_ERR_ABORT) at
/usr/os_src/xorg/xserver/hw/xfree86/common/xf86Init.c:1066
#4  0x000000000047573a in AbortDDX (error=error at 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 at 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 at 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 at 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 at 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 at entry=0x7f93fac5a000) at
/usr/os_src/xorg/driver/xf86-video-intel/src/sna/kgem.c:1471
#16 0x00007f93f52f6408 in kgem_init (kgem=kgem at entry=0x7f93fac5a000,
fd=<optimized out>, dev=<optimized out>, gen=gen at 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 at entry=0x8207a0
<screenInfo>, argc=argc at entry=4, argv=argv at 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 at 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 at 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 at 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 at 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 ?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20160425/d756c694/attachment-0001.html>


More information about the intel-gfx-bugs mailing list