From george@phobos.cs.msu.su  Wed Jun 29 12:21:04 2005
Return-Path: <george@phobos.cs.msu.su>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id E5E1C16A41C
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 29 Jun 2005 12:21:04 +0000 (GMT)
	(envelope-from george@phobos.cs.msu.su)
Received: from phobos.cs.msu.su (phobos.cs.msu.su [158.250.10.5])
	by mx1.FreeBSD.org (Postfix) with ESMTP id D66A843D1D
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 29 Jun 2005 12:21:03 +0000 (GMT)
	(envelope-from george@phobos.cs.msu.su)
Received: from phobos.cs.msu.su (localhost [127.0.0.1])
	by phobos.cs.msu.su (8.13.3/8.13.3) with ESMTP id j5TCNS9P027115
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 29 Jun 2005 16:23:28 +0400 (MSD)
	(envelope-from george@phobos.cs.msu.su)
Received: (from george@localhost)
	by phobos.cs.msu.su (8.13.3/8.13.3/Submit) id j5TCNS3o027114;
	Wed, 29 Jun 2005 16:23:28 +0400 (MSD)
	(envelope-from george)
Message-Id: <200506291223.j5TCNS3o027114@phobos.cs.msu.su>
Date: Wed, 29 Jun 2005 16:23:28 +0400 (MSD)
From: "George V. Kouryachy" <frbrgeorge@gmail.com>
Reply-To: "George V. Kouryachy" <frbrgeorge@gmail.com>
To: FreeBSD-gnats-submit@freebsd.org
Cc:
Subject: sox does not play files correctly
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         82777
>Category:       ports
>Synopsis:       sox does not play files correctly
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pav
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jun 29 12:30:23 GMT 2005
>Closed-Date:    Mon Jul 18 15:18:16 GMT 2005
>Last-Modified:  Mon Jul 18 15:18:16 GMT 2005
>Originator:     George V. Kouryachy
>Release:        FreeBSD 5.4-RELEASE-p2 i386
>Organization:
Moscow State University, CMC dept, Russia
>Environment:
System: FreeBSD phobos.cs.msu.su 5.4-RELEASE-p2 FreeBSD 5.4-RELEASE-p2 #4: Tue Jun 14 18:13:40 MSD 2005 root@phobos.cs.msu.su:/usr/obj/usr/src/sys/PHOBOS i386

options         HZ=4096

>Description:
	When running though 'play', sox plays only the start of file,
	then fcloses it. Strange thing in truss output below is that sox
	performs ioctl(5,AUDIO_COMPAT_DRAIN,0x0) just after opening the file
	instead of doing it just before closing the file.
>How-To-Repeat:
	just use /usr/local/bin/plaay with any long .wav on fast computer
	and you'll hear only start of sound
>Fix:
	The patch followed is akina hack so it uses AUDIO_COMPAT_DRAIN
	ioctl directly. To make it cleaner one may check out why original sox
	performs AUDIO_COMPAT_DRAIN so early.

--- patch-src_st_ossstopwrite begins here ---
diff -ur src/handlers.c /dst/tmp/src/handlers.c
--- src/handlers.c	Mon Dec 20 22:43:50 2004
+++ /dst/tmp/src/handlers.c	Wed Jun 29 15:46:32 2005
@@ -322,7 +322,7 @@
 #ifdef HAVE_OSS
     {ossdspnames, ST_FILE_STEREO,
         st_ossdspstartread, st_rawread, st_rawstopread,
-        st_ossdspstartwrite, st_rawwrite, st_rawstopwrite, st_format_nothing_seek},
+        st_ossdspstartwrite, st_rawwrite, st_ossstopwrite, st_format_nothing_seek},
 #endif
     {prcnames, ST_FILE_SEEK,
         st_prcstartread, st_prcread, st_rawstopread,
diff -ur src/oss.c /dst/tmp/src/oss.c
--- src/oss.c	Tue Sep 28 06:33:09 2004
+++ /dst/tmp/src/oss.c	Wed Jun 29 15:46:32 2005
@@ -25,6 +25,7 @@
  *
  */
 
+#include <machine/pcaudioio.h>
 #include "st_i.h"
 
 #if     defined(HAVE_OSS)
@@ -210,6 +211,18 @@
     rc = ossdspinit(ft);
     sigintreg(ft);      /* Prepare to catch SIGINT */
     return rc;
+}
+
+int st_ossstopwrite(ft_t ft)
+{
+        if (st_write(ft, ft->file.buf, 1, ft->file.pos) != ft->file.pos)
+        {
+            ft->file.eof = ST_EOF;
+        }
+        ioctl(fileno(ft->fp),AUDIO_COMPAT_DRAIN,ft->file.pos);
+        ft->file.pos = 0;
+        free(ft->file.buf);
+        return ST_SUCCESS;
 }
 
 int st_ossdspstartwrite(ft_t ft)
diff -ur src/st_i.h /dst/tmp/src/st_i.h
--- src/st_i.h	Mon Dec 20 22:43:50 2004
+++ /dst/tmp/src/st_i.h	Wed Jun 29 15:46:32 2005
@@ -259,6 +259,7 @@
 #ifdef HAVE_OSS
 int st_ossdspstartread(ft_t ft);
 int st_ossdspstartwrite(ft_t ft);
+int st_ossstopwrite(ft_t ft);
 #endif
 
 int st_prcstartread(ft_t ft);
--- patch-src_st_ossstopwrite ends here ---

--- sox.truss begins here ---
mmap(0x0,3920,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 671756288 (0x280a3000)
munmap(0x280a3000,0xf50)			 = 0 (0x0)
__sysctl(0xbfbfe1c0,0x2,0x2809fc58,0xbfbfe1bc,0x0,0x0) = 0 (0x0)
mmap(0x0,32768,(0x3)PROT_READ|PROT_WRITE,(0x1002)MAP_ANON|MAP_PRIVATE,-1,0x0) = 671756288 (0x280a3000)
issetugid()					 = 0 (0x0)
open("/etc/libmap.conf",0x0,0666)		 ERR#2 'No such file or directory'
open("/var/run/ld-elf.so.hints",0x0,00)		 = 4 (0x4)
read(0x4,0xbfbfe268,0x80)			 = 128 (0x80)
lseek(4,0x80,SEEK_SET)				 = 128 (0x80)
read(0x4,0x280a8000,0x77)			 = 119 (0x77)
close(4)					 = 0 (0x0)
access("/lib/libvorbisfile.so.4",0)		 ERR#2 'No such file or directory'
access("/usr/lib/libvorbisfile.so.4",0)		 ERR#2 'No such file or directory'
access("/usr/lib/compat/libvorbisfile.so.4",0)	 ERR#2 'No such file or directory'
access("/usr/X11R6/lib/libvorbisfile.so.4",0)	 ERR#2 'No such file or directory'
access("/usr/local/lib/libvorbisfile.so.4",0)	 = 0 (0x0)
open("/usr/local/lib/libvorbisfile.so.4",0x0,00) = 4 (0x4)
fstat(4,0xbfbfe2b8)				 = 0 (0x0)
read(0x4,0x2809eba0,0x1000)			 = 4096 (0x1000)
mmap(0x0,28672,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 671789056 (0x280ab000)
mprotect(0x280b0000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x280b0000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x280b1000,4096,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0x5000) = 671813632 (0x280b1000)
close(4)					 = 0 (0x0)
access("/lib/libvorbisenc.so.2",0)		 ERR#2 'No such file or directory'
access("/usr/lib/libvorbisenc.so.2",0)		 ERR#2 'No such file or directory'
access("/usr/lib/compat/libvorbisenc.so.2",0)	 ERR#2 'No such file or directory'
access("/usr/X11R6/lib/libvorbisenc.so.2",0)	 ERR#2 'No such file or directory'
access("/usr/local/lib/libvorbisenc.so.2",0)	 = 0 (0x0)
open("/usr/local/lib/libvorbisenc.so.2",0x0,027757761270) = 4 (0x4)
fstat(4,0xbfbfe2b8)				 = 0 (0x0)
read(0x4,0x2809eba0,0x1000)			 = 4096 (0x1000)
mmap(0x0,1040384,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 671817728 (0x280b2000)
mprotect(0x280bc000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x280bc000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x280bd000,987136,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0xa000) = 671862784 (0x280bd000)
mmap(0x281ae000,8192,(0x3)PROT_READ|PROT_WRITE,(0x1012)MAP_ANON|MAP_FIXED|MAP_PRIVATE,-1,0x0) = 672849920 (0x281ae000)
close(4)					 = 0 (0x0)
access("/lib/libvorbis.so.3",0)			 ERR#2 'No such file or directory'
access("/usr/lib/libvorbis.so.3",0)		 ERR#2 'No such file or directory'
access("/usr/lib/compat/libvorbis.so.3",0)	 ERR#2 'No such file or directory'
access("/usr/X11R6/lib/libvorbis.so.3",0)	 ERR#2 'No such file or directory'
access("/usr/local/lib/libvorbis.so.3",0)	 = 0 (0x0)
open("/usr/local/lib/libvorbis.so.3",0x0,027757761270) = 4 (0x4)
fstat(4,0xbfbfe2b8)				 = 0 (0x0)
read(0x4,0x2809eba0,0x1000)			 = 4096 (0x1000)
mmap(0x0,155648,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 672858112 (0x281b0000)
mprotect(0x281c6000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x281c6000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x281c7000,61440,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0x17000) = 672952320 (0x281c7000)
close(4)					 = 0 (0x0)
access("/lib/libogg.so.5",0)			 ERR#2 'No such file or directory'
access("/usr/lib/libogg.so.5",0)		 ERR#2 'No such file or directory'
access("/usr/lib/compat/libogg.so.5",0)		 ERR#2 'No such file or directory'
access("/usr/X11R6/lib/libogg.so.5",0)		 ERR#2 'No such file or directory'
access("/usr/local/lib/libogg.so.5",0)		 = 0 (0x0)
open("/usr/local/lib/libogg.so.5",0x0,027757761270) = 4 (0x4)
fstat(4,0xbfbfe2b8)				 = 0 (0x0)
read(0x4,0x2809eba0,0x1000)			 = 4096 (0x1000)
mmap(0x0,20480,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 673013760 (0x281d6000)
mprotect(0x281d9000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x281d9000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x281da000,4096,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0x3000) = 673030144 (0x281da000)
close(4)					 = 0 (0x0)
access("/lib/libm.so.3",0)			 = 0 (0x0)
open("/lib/libm.so.3",0x0,027757761270)		 = 4 (0x4)
fstat(4,0xbfbfe2b8)				 = 0 (0x0)
read(0x4,0x2809eba0,0x1000)			 = 4096 (0x1000)
mmap(0x0,110592,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 673034240 (0x281db000)
mprotect(0x281f1000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x281f1000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x281f2000,16384,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0x17000) = 673128448 (0x281f2000)
close(4)					 = 0 (0x0)
access("/lib/libmad.so.2",0)			 ERR#2 'No such file or directory'
access("/usr/lib/libmad.so.2",0)		 ERR#2 'No such file or directory'
access("/usr/lib/compat/libmad.so.2",0)		 ERR#2 'No such file or directory'
access("/usr/X11R6/lib/libmad.so.2",0)		 ERR#2 'No such file or directory'
access("/usr/local/lib/libmad.so.2",0)		 = 0 (0x0)
open("/usr/local/lib/libmad.so.2",0x0,027757761270) = 4 (0x4)
fstat(4,0xbfbfe2b8)				 = 0 (0x0)
read(0x4,0x2809eba0,0x1000)			 = 4096 (0x1000)
mmap(0x0,90112,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 673144832 (0x281f6000)
mprotect(0x2820a000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x2820a000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x2820b000,4096,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0x14000) = 673230848 (0x2820b000)
close(4)					 = 0 (0x0)
access("/lib/libmp3lame.so.0",0)		 ERR#2 'No such file or directory'
access("/usr/lib/libmp3lame.so.0",0)		 ERR#2 'No such file or directory'
access("/usr/lib/compat/libmp3lame.so.0",0)	 ERR#2 'No such file or directory'
access("/usr/X11R6/lib/libmp3lame.so.0",0)	 ERR#2 'No such file or directory'
access("/usr/local/lib/libmp3lame.so.0",0)	 = 0 (0x0)
open("/usr/local/lib/libmp3lame.so.0",0x0,027757761270) = 4 (0x4)
fstat(4,0xbfbfe2b8)				 = 0 (0x0)
read(0x4,0x2809eba0,0x1000)			 = 4096 (0x1000)
mmap(0x0,622592,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 673234944 (0x2820c000)
mprotect(0x2824c000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x2824c000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x2824d000,12288,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0x40000) = 673501184 (0x2824d000)
mmap(0x28250000,344064,(0x3)PROT_READ|PROT_WRITE,(0x1012)MAP_ANON|MAP_FIXED|MAP_PRIVATE,-1,0x0) = 673513472 (0x28250000)
close(4)					 = 0 (0x0)
access("/lib/libc.so.5",0)			 = 0 (0x0)
open("/lib/libc.so.5",0x0,027757761270)		 = 4 (0x4)
fstat(4,0xbfbfe2b8)				 = 0 (0x0)
read(0x4,0x2809eba0,0x1000)			 = 4096 (0x1000)
mmap(0x0,892928,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 673857536 (0x282a4000)
mprotect(0x28364000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x28364000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x28365000,20480,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0xc0000) = 674648064 (0x28365000)
mmap(0x2836a000,81920,(0x3)PROT_READ|PROT_WRITE,(0x1012)MAP_ANON|MAP_FIXED|MAP_PRIVATE,-1,0x0) = 674668544 (0x2836a000)
close(4)					 = 0 (0x0)
access("/usr/local/lib/libvorbis.so.3",0)	 = 0 (0x0)
access("/usr/local/lib/libvorbis.so.3",0)	 = 0 (0x0)
access("/usr/local/lib/libogg.so.5",0)		 = 0 (0x0)
access("/usr/local/lib/libm.so.3",0)		 ERR#2 'No such file or directory'
access("/lib/libm.so.3",0)			 = 0 (0x0)
mmap(0x0,1184,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0x4a0)			 = 0 (0x0)
mmap(0x0,936,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0x3a8)			 = 0 (0x0)
mmap(0x0,456,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0x1c8)			 = 0 (0x0)
mmap(0x0,1632,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0x660)			 = 0 (0x0)
mmap(0x0,816,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0x330)			 = 0 (0x0)
mmap(0x0,2104,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0x838)			 = 0 (0x0)
mmap(0x0,736,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0x2e0)			 = 0 (0x0)
mprotect(0x2820c000,266240,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mmap(0x0,3984,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0xf90)			 = 0 (0x0)
mprotect(0x2820c000,266240,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mprotect(0x282a4000,790528,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mmap(0x0,22024,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 674750464 (0x2837e000)
munmap(0x2837e000,0x5608)			 = 0 (0x0)
mprotect(0x282a4000,790528,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
sigaction(SIGILL,{ 0x28086b0c 0x0|ONSTACK|RESTART|RESETHAND|NOCLDSTOP|NODEFER|NOCLDWAIT|SIGINFO ss_t },{ SIG_DFL 0x0|ONSTACK|RESETHAND|NOCLDSTOP|NODEFER|NOCLDWAIT|SIGINFO ss_t }) = 0 (0x0)
sigprocmask(0x1,0x0,0x2809eafc)			 = 0 (0x0)
sigaction(SIGILL,{ SIG_DFL 0x0|ONSTACK|RESETHAND|NOCLDSTOP|NODEFER|NOCLDWAIT|SIGINFO ss_t },0x0) = 0 (0x0)
sysarch(0x1,0xbfbfe318)				 = 17 (0x11)
sigprocmask(0x1,0x2809eaa0,0xbfbfe318)		 = 0 (0x0)
sigprocmask(0x3,0x2809eab0,0x0)			 = 0 (0x0)
readlink("/etc/malloc.conf",0xbfbfe2a0,63)	 ERR#2 'No such file or directory'
issetugid()					 = 0 (0x0)
mmap(0x0,4096,(0x3)PROT_READ|PROT_WRITE,(0x1002)MAP_ANON|MAP_PRIVATE,-1,0x0) = 674750464 (0x2837e000)
break(0x80a6000)				 = 0 (0x0)
break(0x80a7000)				 = 0 (0x0)
break(0x80a8000)				 = 0 (0x0)
break(0x80a9000)				 = 0 (0x0)
open("open.wav",0x0,0666)			 = 4 (0x4)
fstat(4,0xbfbfe2f0)				 = 0 (0x0)
fstat(4,0xbfbfe1f0)				 = 0 (0x0)
break(0x80ad000)				 = 0 (0x0)
read(0x4,0x80a9000,0x4000)			 = 5607 (0x15e7)
lseek(4,0x0,SEEK_CUR)				 = 5607 (0x15e7)
break(0x80af000)				 = 0 (0x0)
lseek(4,0x0,SEEK_SET)				 = 0 (0x0)
read(0x4,0x80a9000,0x4000)			 = 5607 (0x15e7)
lseek(4,0x15e8,SEEK_SET)			 = 5608 (0x15e8)
read(0x4,0x80a9000,0x4000)			 = 0 (0x0)
lseek(4,0x0,SEEK_SET)				 = 0 (0x0)
read(0x4,0x80a9000,0x4000)			 = 5607 (0x15e7)
open("/dev/dsp",0x601,0666)			 = 5 (0x5)
fstat(5,0xbfbfe290)				 = 0 (0x0)
break(0x80b1000)				 = 0 (0x0)
fstat(5,0xbfbfe2d0)				 = 0 (0x0)
ioctl(5,SNDCTL_DSP_RESET,0x0)			 = 0 (0x0)
ioctl(5,SNDCTL_DSP_GETFMTS,0xbfbfe338)		 = 0 (0x0)
ioctl(5,SNDCTL_DSP_SETFMT,0xbfbfe338)		 = 0 (0x0)
ioctl(5,SNDCTL_DSP_STEREO,0xbfbfe338)		 = 0 (0x0)
ioctl(5,SNDCTL_DSP_SPEED,0xbfbfe338)		 = 0 (0x0)
ioctl(5,SNDCTL_DSP_GETBLKSIZE,0x80a88ac)	 = 0 (0x0)
break(0x80b2000)				 = 0 (0x0)
ioctl(5,AUDIO_COMPAT_DRAIN,0x0)			 = 0 (0x0)
break(0x80ba000)				 = 0 (0x0)
read(0x4,0x80a9000,0x4000)			 = 0 (0x0)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
write(5,0x80b1000,256)				 = 256 (0x100)
close(4)					 = 0 (0x0)
write(5,0x80b1000,187)				 = 187 (0xbb)
break(0x80b9000)				 = 0 (0x0)
close(5)					 = 0 (0x0)
break(0x80b7000)				 = 0 (0x0)
exit(0x0)					
process exit, rval = 0
--- sox.truss ends here ---


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->feedback 
State-Changed-By: pav 
State-Changed-When: Thu Jun 30 17:32:35 GMT 2005 
State-Changed-Why:  
Asked maintainer for approval 


Responsible-Changed-From-To: freebsd-ports-bugs->pav 
Responsible-Changed-By: pav 
Responsible-Changed-When: Thu Jun 30 17:32:35 GMT 2005 
Responsible-Changed-Why:  
Track 

http://www.freebsd.org/cgi/query-pr.cgi?pr=82777 

From: Pav Lucistnik <pav@FreeBSD.org>
To: dnelson@allantgroup.com, bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/82777: sox does not play files correctly
Date: Thu, 30 Jun 2005 19:32:33 +0200

 Dear maintainer of FreeBSD port audio/sox, please take a look at
 
 http://www.freebsd.org/cgi/query-pr.cgi?q=82777
 
 Do you approve this patch?
 
 -- 
 Pav Lucistnik <pav@oook.cz>
               <pav@FreeBSD.org>
 
 How will you recognize experienced hacker from beginner?
 Beginner thinks that kilobyte have 1000 bytes.
 Experienced hacker thinks one kilometer have 1024 meters.

From: Dan Nelson <dnelson@allantgroup.com>
To: Pav Lucistnik <pav@FreeBSD.org>
Cc: bug-followup@FreeBSD.org
Subject: Re: ports/82777: sox does not play files correctly
Date: Mon, 11 Jul 2005 10:46:32 -0500

 In the last episode (Jun 30), Pav Lucistnik said:
 > Dear maintainer of FreeBSD port audio/sox, please take a look at
 > 
 > http://www.freebsd.org/cgi/query-pr.cgi?q=82777
 > 
 > Do you approve this patch?
 
 Actually, I'm not sure that any calls to SNDCTL_DSP_SYNC (it and
 AUDIO_COMPAT_DRAIN share the same ioctl code and truss may just use the
 first name it finds) are even required.  According to the OSS docs,
 SNDCTL_DSP_SYNC should not abort any sound currently being played, but
 will wait until it has finished, and it's automatically called when the
 filehandle is closed.  I'll have to connect some speakers to my machine
 so I can hear the problem myself.
 
 http://www.4front-tech.com/pguide/oss.pdf page 36 describes
 SNDCTL_DSP_SYNC and even recommends that programs not use it.
 
 -- 
 	Dan Nelson
 	dnelson@allantgroup.com

From: Pav Lucistnik <pav@FreeBSD.org>
To: dnelson@allantgroup.com, bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/82777: sox does not play files correctly
Date: Wed, 13 Jul 2005 18:31:39 +0200

 Dan, can you provide an alternative patch then?
 
 -- 
 Pav Lucistnik <pav@oook.cz>
               <pav@FreeBSD.org>
 
 Every man is as God made him, ay, and often worse.
   -- Miguel de Cervantes

From: Dan Nelson <dnelson@allantgroup.com>
To: Pav Lucistnik <pav@FreeBSD.org>
Cc: bug-followup@FreeBSD.org
Subject: Re: ports/82777: sox does not play files correctly
Date: Mon, 18 Jul 2005 00:03:45 -0500

 In the last episode (Jul 13), Pav Lucistnik said:
 > Dan, can you provide an alternative patch then?
 
 It actually looks more like a sound driver bug, since a simple "cat
 testfile.au > /dev/sound" chops the audio off also.  Closing the sound
 device should wait until all written data is played but that isn't
 happening.
 
 -- 
 	Dan Nelson
 	dnelson@allantgroup.com

From: Pav Lucistnik <pav@FreeBSD.org>
To: Dan Nelson <dnelson@allantgroup.com>
Cc: bug-followup@FreeBSD.org
Subject: Re: ports/82777: sox does not play files correctly
Date: Mon, 18 Jul 2005 09:23:46 +0200

 --=-MtLPhzQbNay+xxbDkJrZ
 Content-Type: text/plain; charset=ISO8859-2
 Content-Transfer-Encoding: quoted-printable
 
 Dan Nelson p=ED=B9e v po 18. 07. 2005 v 00:03 -0500:
 > In the last episode (Jul 13), Pav Lucistnik said:
 > > Dan, can you provide an alternative patch then?
 >=20
 > It actually looks more like a sound driver bug, since a simple "cat
 > testfile.au > /dev/sound" chops the audio off also.  Closing the sound
 > device should wait until all written data is played but that isn't
 > happening.
 
 In that case, should this PR be closed and new PR be filed in kern
 category?
 
 --=20
 Pav Lucistnik <pav@oook.cz>
               <pav@FreeBSD.org>
 
 Adding horrible bugs to the source is a venal sin.
 
 --=-MtLPhzQbNay+xxbDkJrZ
 Content-Type: application/pgp-signature; name=signature.asc
 Content-Description: This is a digitally signed message part
 
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.1 (FreeBSD)
 
 iD8DBQBC21kCntdYP8FOsoIRApfZAJ0QPph5I+kdUmnqngBSRYGMFeieiQCghV3Q
 U9BZ5HouimsCoj/NVus2FHs=
 =Zfab
 -----END PGP SIGNATURE-----
 
 --=-MtLPhzQbNay+xxbDkJrZ--

From: Dan Nelson <dnelson@allantgroup.com>
To: Pav Lucistnik <pav@FreeBSD.org>
Cc: bug-followup@FreeBSD.org
Subject: Re: ports/82777: sox does not play files correctly
Date: Mon, 18 Jul 2005 10:01:45 -0500

 In the last episode (Jul 18), Pav Lucistnik said:
 > Dan Nelson píse v po 18. 07. 2005 v 00:03 -0500:
 > > In the last episode (Jul 13), Pav Lucistnik said:
 > > > Dan, can you provide an alternative patch then?
 > > 
 > > It actually looks more like a sound driver bug, since a simple "cat
 > > testfile.au > /dev/sound" chops the audio off also.  Closing the sound
 > > device should wait until all written data is played but that isn't
 > > happening.
 > 
 > In that case, should this PR be closed and new PR be filed in kern
 > category?
 
 The same problem was reported in kern/79498 for FreeBSD 4.11.  The
 source code looks like it's doing the right thing, though.  In
 sys/dev/sound/pcm/dsp.c:dsp_close(), chn_flush() is called which should
 play any buffered data, then wait for it to complete.
 
 -- 
 	Dan Nelson
 	dnelson@allantgroup.com
State-Changed-From-To: feedback->closed 
State-Changed-By: pav 
State-Changed-When: Mon Jul 18 15:18:00 GMT 2005 
State-Changed-Why:  
Looks like problem is down in system 

http://www.freebsd.org/cgi/query-pr.cgi?pr=82777 
>Unformatted:
