On Mon, May 23, 2016 at 09:09:34PM +0200, David Coppa wrote:
> On Mon, 23 May 2016, Ryan Freeman wrote:
> 
> > Hey,
> > 
> > I've noticed ioquake3 locking up randomly (but not dumping a core it seems).
> > Unfortunately I don't know when it started, but I was able to get something
> > from running it in gdb in tmux.  dmesg included at bottom.
> > 
> > Cheers!
> > -ryan
> > 
> > 
> > Bitterman^7 was gunned down by Slash^7
> > tty]
> > Program received signal SIGSEGV, Segmentation fault.
> > [Switching to thread 1021924]
> > 0x000008726a10899c in MixDirect_SSE () from /usr/local/lib/libopenal.so.2.2
> > (gdb) bt
> 
> Please try the openal diff below (cherrypicked from upstream git)...

Applied and rebuilt openal, pretty sure that worked.  I just played
through a few rounds and made it to 'tier 4' in the game, whereas
prior I don't think I was able to finish even a single match without
the hang...

Cheers!
-ryan

> 
> Ciao!
> David
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/audio/openal/Makefile,v
> retrieving revision 1.36
> diff -u -p -u -p -r1.36 Makefile
> --- Makefile  9 Apr 2016 21:11:56 -0000       1.36
> +++ Makefile  23 May 2016 19:08:48 -0000
> @@ -8,7 +8,7 @@ COMMENT =     cross-platform 3D audio API
>  
>  V =          1.15.1
>  EPOCH =              0
> -REVISION =   3
> +REVISION =   4
>  DISTNAME =   openal-soft-$V
>  PKGNAME =    openal-$V
>  CATEGORIES = audio
> Index: patches/patch-Alc_mixer_sse_c
> ===================================================================
> RCS file: patches/patch-Alc_mixer_sse_c
> diff -N patches/patch-Alc_mixer_sse_c
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-Alc_mixer_sse_c     23 May 2016 19:08:48 -0000
> @@ -0,0 +1,25 @@
> +$OpenBSD$
> +
> +Avoid an underflow in the SSE mixers if BufferSize is less than 4
> +(upstream git commit 564a1822595e287cf808ea63a03d96719e3cc7b4)
> +
> +--- Alc/mixer_sse.c.orig     Mon May 23 20:59:18 2016
> ++++ Alc/mixer_sse.c  Mon May 23 21:00:32 2016
> +@@ -155,7 +155,7 @@ void MixDirect_SSE(const DirectParams *params, const A
> +             ClickRemoval[c] -= data[0]*DrySend;
> + 
> +         gain = _mm_set1_ps(DrySend);
> +-        for(pos = 0;pos < BufferSize-3;pos += 4)
> ++        for(pos = 0;BufferSize-pos > 3;pos += 4)
> +         {
> +             const __m128 val4 = _mm_load_ps(&data[pos]);
> +             __m128 dry4 = _mm_load_ps(&DryBuffer[c][OutPos+pos]);
> +@@ -189,7 +189,7 @@ void MixSend_SSE(const SendParams *params, const ALflo
> +         WetClickRemoval[0] -= data[0] * WetGain;
> + 
> +     gain = _mm_set1_ps(WetGain);
> +-    for(pos = 0;pos < BufferSize-3;pos+=4)
> ++    for(pos = 0;BufferSize-pos > 3;pos += 4)
> +     {
> +         const __m128 val4 = _mm_load_ps(&data[pos]);
> +         __m128 wet4 = _mm_load_ps(&WetBuffer[0][OutPos+pos]);

Reply via email to