Bug#392546: xserver-xorg-video-sis: Missing symbol causes X to barf
Package: xserver-xorg-video-sis
Version: 1:0.9.1-3
Severity: grave
Tags: patch
Justification: renders package unusable
Hi,
After upgrading to this version of xserver-xorg-video-sis, when I next
restarted X, it got partway through loading, switched the video mode,
and then died, leaving the console unusable. I found the following
message in the logs:
xdm.log.1:/usr/bin/X: symbol lookup error: /usr/lib/xorg/modules/drivers/sis_drv.so: undefined symbol: assert
It turns out that this version (or another recent one) added a call to
assert(3) in the code. But it did not include <assert.h>. It still
compiles, with an "implicit declaration" warning, but a reference to the
symbol "assert" is left in the object. Since assert(3) is a macro and
not a function, "assert" cannot be resolved by the dynamic linker. Thus
X fails to load the module and pukes all over the console.
The fix is to add "#include <assert.h>" in src/sis.h.
There are a few other "implicit declaration" warnings generated
elsewhere in the code. They aren't causing problems at present because
the functions in question are actually functions, and their default
declarations seem to be adequate. But they might as well be fixed to
avoid future problems. So also add to src/sis.h:
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/ioctl.h>
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17debian9
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Versions of packages xserver-xorg-video-sis depends on:
ii libc6 2.3.6.ds1-6 GNU C Library: Shared libraries
ii xserver-xorg-core 2:1.1.1-9 X.Org X server -- core server
xserver-xorg-video-sis recommends no packages.
-- no debconf information
Reply to: