XFree 4.2.0 Patch
Problem starting SMASH on a Linux X Window server
On some Linux X Window servers, in particular Linux workstations with European keyboards, both the Solaris and the Linux versions of SMASH™ hang when launched and the main Viewer window is never displayed.
In this case, typing CTRL-C or killing the SMASH™ processes and restarting SMASH™ solves the problem until the user logs out. At every login, the same problem appears. In some cases, the problem appears every time SMASH™ is launched and is therefore quite problematic.
XFree defect description
This defect is neither a SMASH™ issue nor a Mainwin issue.
Mainsoft indeed found that the defect is inside libX and XFree. The defect was reported to the XFree developers and has been fixed in newer releases of XFree. The references of this hang in the X Window server, fixed by Mainsoft, are the following:
http://www.mail-archive.com/devel@xfree86.org/msg00402.html
http://cvsweb.xfree86.org/cvsweb/xc/lib/X11/XKBGetMap.c
Dolphin XFree patch
Dolphin has recompiled the XFree server releases 4.2.0-8 (for Red Hat Linux) and 4.2.0-107 (for SuSE Linux) with the correction indicated by MainWin applied and has confirmed that this fix does solve the problem. This problem is apparently fixed in XFree 4.3.
Red Hat Linux:
The XFree420_redhat_patch.tar.gz patch contains the following RPM files:
XFree86-libs-4.2.0-8dolphin.i386.rpm
XFree86-devel-4.2.0-8dolphin.i386.rpm
Both RPM files must be installed in replacement of the standard XFree86 4.2.0 RPMs using the following command:
rpm -Uvh --force XFree86-libs-4.2.0-8dolphin.i386.rpm XFree86-devel-4.2.0-8dolphin.i386.rpm
You can check which version of the RPMs are installed by using the commands:
rpm -q XFree86-libs
rpm -q XFree86-devel
As you will notice, the Dolphin patch uses a specific release number, e.g. 4.2.0-8dolphin, so that you can easily identify on which systems the patch has been installed.
SuSE Linux:
The XFree420_suse_patch.tar.gz patch contains the following RPM files:
xshared-4.2.0-107dolphin.i386.rpm
xdevel-4.2.0-107dolphin.i386.rpm
Both RPM files must be installed in replacement of the standard XFree86 4.2.0 RPMs using the following command:
rpm -Uvh --force xshared-4.2.0-107dolphin.i386.rpm xdevel-4.2.0-107dolphin.i386.rpm
You can check which version of the RPMs are installed by using the commands:
rpm -q xshared
rpm -q xdevel
As you will notice, the Dolphin patch uses a specific release number, e.g. 4.2.0-107dolphin, so that you can easily identify on which systems the patch has been installed.
Compiling your own XFree patch
for Red Hat Linux
If you prefer to compile and install your own patch for XFree on a Red Hat Linux system instead of using the one provided by Dolphin, you can follow the steps below.
Install the source RPM:
rpm -i XFree86-4.2.0-8.src.rpm
cd /usr/src/redhat/SOURCES
cat << EOF > XFree86-4.2.0-jose-xkb.patch
*** xc/lib/X11/XKBGetMap.c Mon Feb 3 17:51:13 2003
--- xc/lib/X11/XKBGetMap.c.old Mon Feb 3 19:31:13 2003
***************
*** 974,979 ****
--- 974,980 ----
UnlockDisplay(dpy);
return status;
}
+ UnlockDisplay(dpy);
return Success;
}
EOF
cd /usr/src/redhat/SPECS
Add a reference to Jose's patch in the file XFree86.spec :
- Search for xkb-is and find a line beginning with Patch803.
- Add a similar line, keeping patch numbers ordered, which is the same but with ' jose-xkb ' instead of ' xkb-is ' and 810 instead of 803. For example:
Patch810: XFree86-4.2.0-jose-xkb.patch
- Search again for xkb-is and find a line beginning with %patch
- Add a similar line, again keeping the patch numbers ordered:
%patch810 -p0 -b .jose-xkb
- Or on Red Hat Linux 8.0 (the format should again be similar to the line with xkb-is ):
%patch810 -p0 %{?with_bk:-b .jose-xkb}
- Rebuild the RPMs using the following command (this will take some time - about an hour) :
rpmbuild -bb XFree86.spec
Compiling your own XFree patch for SuSE Linux
If you prefer to compile and install your own patch for XFree on a SuSE Linux system instead of using the one provided by Dolphin, you can follow the steps below.
Install the source RPM:
rpm -i xf86-4.2.0-107.src.rpm
cd /usr/src/packages/SOURCES
cat << EOF > p_jose-xkb.diff
*** lib/X11/XKBGetMap.c Mon Feb 3 17:51:13 2003
--- lib/X11/XKBGetMap.c.old Mon Feb 3 19:31:13 2003
***************
*** 974,979 ****
--- 974,980 ----
UnlockDisplay(dpy);
return status;
}
+ UnlockDisplay(dpy);
return Success;
}
EOF
cd /usr/src/packages/SPECS
Add a reference to Jose's patch in the file xf86.spec :
- Search for mouse-misc and find a line beginning with Patch820.
- Add a similar line, keeping patch numbers ordered, which is the same but with 'jose-xkb' instead of 'mouse-misc' and 810 instead of 820. For example:
Patch810: p_jose-xkb.diff
- Search for a line beginning with %patch820
- Add a line just before for Jose's patch:
%patch810
- Rebuild the RPMs using the following command (this will take some time - about an hour) :
rpmbuild -bb xf86.spec
- Install the newly built RPMs using the following commands :
cd /usr/src/packages/RPMS/i386
rpm -Uvh --force xshared-4.2.0-107.rpm xdevel-4.2.0-107.rpm
|