ports/118889: multimedia/mplayer segfaults on AMD64 if the software scaler is used

Neil Hoggarth neil at hoggarth.me.uk
Thu Dec 20 13:00:04 UTC 2007


>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 at 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:



More information about the freebsd-ports-bugs mailing list