Subject: pkg/37057: MPlayer crashes on sparc64 within the x11 video driver
To: None <pkg-manager@netbsd.org, gnats-admin@netbsd.org,>
From: Pierre Pronchery <khorben@defora.org>
List: pkgsrc-bugs
Date: 10/03/2007 21:00:00
>Number:         37057
>Category:       pkg
>Synopsis:       MPlayer crashes on sparc64 within the x11 video driver
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Oct 03 21:00:00 +0000 2007
>Originator:     khorben@defora.org
>Release:        NetBSD 4.99.31
>Organization:

>Environment:
System: NetBSD exxh.defora.lan 4.99.31 NetBSD 4.99.31 (GENERIC) #0: Sun Sep 30 18:22:11 CEST 2007 khorben@exxh.defora.lan:/usr/obj/sys/arch/sparc64/compile/GENERIC sparc64
Architecture: sparc64
Machine: sparc64
>Description:
Just like as reported in pkg/37054, MPlayer crashes due to incorrect usage of
XChangeProperty() with a bus error. In libvo/x11_common.c:

 935 void vo_x11_classhint(Display * display, Window window, char *name)
 936 {
 937     XClassHint wmClass;
 938     pid_t pid = getpid();
 939 
 940     wmClass.res_name = name;
 941     wmClass.res_class = "MPlayer";
 942     XSetClassHint(display, window, &wmClass);
 943     XChangeProperty(display, window, XA_NET_WM_PID, XA_CARDINAL, 32,
 944                     PropModeReplace, (unsigned char *) &pid, 1);
 945 }

The pid variable at line 938 is not aligned on the size of a long.

>How-To-Repeat:
Use MPlayer mplayer-1.0rc9nb9 from pkgsrc on sparc64 with the x11 video output
plug-in.
>Fix:
The following patch fixes the problem:

$NetBSD$

--- libvo/x11_common.c.orig	2006-10-23 00:32:26.000000000 +0200
+++ libvo/x11_common.c
@@ -935,7 +935,7 @@ void vo_x11_decoration(Display * vo_Disp
 void vo_x11_classhint(Display * display, Window window, char *name)
 {
     XClassHint wmClass;
-    pid_t pid = getpid();
+    long pid = getpid();
 
     wmClass.res_name = name;
     wmClass.res_class = "MPlayer";