Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 Dec 2007 12:53:49 GMT
From:      Neil Hoggarth <neil@hoggarth.me.uk>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/118889: multimedia/mplayer segfaults on AMD64 if the software scaler is used
Message-ID:  <200712201253.lBKCrns7028385@www.freebsd.org>
Resent-Message-ID: <200712201300.lBKD03oF032883@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         118889
>Category:       ports
>Synopsis:       multimedia/mplayer segfaults on AMD64 if the software scaler is used
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Dec 20 13:00:03 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator:     Neil Hoggarth
>Release:        7.0-BETA4
>Organization:
>Environment:
FreeBSD neilhoggarth-2.dsl.easynet.co.uk 7.0-BETA4 FreeBSD 7.0-BETA4 #0: Sun Dec 16 21:56:28 GMT 2007     root@neilhoggarth-2.dsl.easynet.co.uk:/usr/obj/usr/src/sys/GENERIC  amd64

>Description:
mplayer-0.99.10_14 (and the dependent mencoder port) fail with a segfault in
the MMX2 accelerated software scaler code when run on my system (which uses an
AMD Athlon BE-2400 processor).
>How-To-Repeat:
mplayer -ao null -vo null -vf scale=100:100 some-input-file.mpg

>Fix:
The MPlayer Subversion repository contains a fix for this.
<http://svn.mplayerhq.hu/mplayer?view=rev&revision=22401>;

I put the following patch in /usr/ports/multimedia/mplayer/files on my
system, and reinstalled mplayer and mencoder with "portupgrade -f". This
fixed the problem for me.


Patch attached with submission follows:

--- libswscale/swscale_template.c~	2006-10-22 23:32:29.000000000 +0100
+++ libswscale/swscale_template.c	2007-12-20 12:20:30.373604637 +0000
@@ -3070,6 +3070,7 @@
 		for(i=0; i<vLumFilterSize; i++)
 		{
 			lumMmxFilter[4*i+0]= (int32_t)lumSrcPtr[i];
+			lumMmxFilter[4*i+1]= (uint64_t)lumSrcPtr[i] >> 32;
 			lumMmxFilter[4*i+2]= 
 			lumMmxFilter[4*i+3]= 
 				((uint16_t)vLumFilter[dstY*vLumFilterSize + i])*0x10001;
@@ -3077,6 +3078,7 @@
 		for(i=0; i<vChrFilterSize; i++)
 		{
 			chrMmxFilter[4*i+0]= (int32_t)chrSrcPtr[i];
+			chrMmxFilter[4*i+1]= (uint64_t)chrSrcPtr[i] >> 32;
 			chrMmxFilter[4*i+2]= 
 			chrMmxFilter[4*i+3]= 
 				((uint16_t)vChrFilter[chrDstY*vChrFilterSize + i])*0x10001;


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200712201253.lBKCrns7028385>