ports/148258: [PATCH] x11/slim: Fix crash on SIGTERM
Bernhard Froehlich
decke at FreeBSD.org
Wed Jun 30 11:20:08 UTC 2010
>Number: 148258
>Category: ports
>Synopsis: [PATCH] x11/slim: Fix crash on SIGTERM
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Jun 30 11:20:07 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Bernhard Froehlich
>Release: FreeBSD 8.1-PRERELEASE amd64
>Organization:
>Environment:
System: FreeBSD chii.bluelife.at 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #2: Fri May 28 19:07:40 CEST 2010
>Description:
This patch is taken from upstream repository as r169. It fixes
the issue that slim coredumps on shutdown when receiving SIGTERM.
Added file(s):
- files/patch-002-fix-shutdown
Port maintainer (henry.hu.sh at gmail.com) is cc'd.
Generated with FreeBSD Port Tools 0.99
>How-To-Repeat:
>Fix:
--- slim-1.3.1_8.patch begins here ---
diff -ruN --exclude=CVS --exclude=.svn /usr/ports/x11/slim.orig/files/patch-002-fix-shutdown /usr/ports/x11/slim/files/patch-002-fix-shutdown
--- /usr/ports/x11/slim.orig/files/patch-002-fix-shutdown 1970-01-01 01:00:00.000000000 +0100
+++ /usr/ports/x11/slim/files/patch-002-fix-shutdown 2010-06-30 13:00:58.000000000 +0200
@@ -0,0 +1,65 @@
+------------------------------------------------------------------------
+r169 | iwamatsu | 2009-11-14 09:13:57 +0100 (Sat, 14 Nov 2009) | 11 lines
+
+Add flag of server check
+
+Slim gets this SIGTERM, and its signal handler calls
+CloseServer() to teardown X. But X is not yet started (as StartServer()
+is still running in another thread, waiting in pause()), and hence this
+calls XcloseDisplay which frees some resources which are not yet allocated.
+
+This parch fix this problem.
+Thanks, Landry Breuil, goebbels, jasper and OpenBSD Developer.
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu at nigauri.org>
+------------------------------------------------------------------------
+--- app.h (revision 168)
++++ app.h (revision 169)
+@@ -36,6 +36,7 @@
+ int GetServerPID();
+ void StopServer();
+
++ bool serverStarted;
+ // Lock functions
+ void GetLock();
+ void RemoveLock();
+--- app.cpp (revision 168)
++++ app.cpp (revision 169)
+@@ -105,7 +105,10 @@
+
+ void CatchSignal(int sig) {
+ cerr << APPNAME << ": unexpected signal " << sig << endl;
+- LoginApp->StopServer();
++
++ if (LoginApp->serverStarted)
++ LoginApp->StopServer();
++
+ LoginApp->RemoveLock();
+ exit(ERR_EXIT);
+ }
+@@ -140,6 +143,7 @@
+ int tmp;
+ ServerPID = -1;
+ testing = false;
++ serverStarted = false;
+ mcookie = string(App::mcookiesize, 'a');
+ daemonmode = false;
+ force_nodaemon = false;
+@@ -860,6 +864,8 @@
+ char* args = new char[argOption.length()+2]; // NULL plus vt
+ strcpy(args, argOption.c_str());
+
++ serverStarted = false;
++
+ int argc = 1;
+ int pos = 0;
+ bool hasVtSet = false;
+@@ -940,6 +946,8 @@
+
+ delete args;
+
++ serverStarted = true;
++
+ return ServerPID;
+ }
+
--- slim-1.3.1_8.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list