From owner-freebsd-bugs@FreeBSD.ORG Wed Nov 30 20:20:06 2005 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 64F8416A41F for ; Wed, 30 Nov 2005 20:20:06 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id B23E343D66 for ; Wed, 30 Nov 2005 20:20:03 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id jAUKK3tc055266 for ; Wed, 30 Nov 2005 20:20:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id jAUKK3El055265; Wed, 30 Nov 2005 20:20:03 GMT (envelope-from gnats) Resent-Date: Wed, 30 Nov 2005 20:20:03 GMT Resent-Message-Id: <200511302020.jAUKK3El055265@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Yuri Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 45E6916A424 for ; Wed, 30 Nov 2005 20:14:15 +0000 (GMT) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [216.136.204.117]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3317643D81 for ; Wed, 30 Nov 2005 20:14:07 +0000 (GMT) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.13.1/8.13.1) with ESMTP id jAUKE6Bj095288 for ; Wed, 30 Nov 2005 20:14:06 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id jAUKE6v1095287; Wed, 30 Nov 2005 20:14:06 GMT (envelope-from nobody) Message-Id: <200511302014.jAUKE6v1095287@www.freebsd.org> Date: Wed, 30 Nov 2005 20:14:06 GMT From: Yuri To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-2.3 Cc: Subject: misc/89775: kevent hangs on second wait for /dev/dsp X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Nov 2005 20:20:06 -0000 >Number: 89775 >Category: misc >Synopsis: kevent hangs on second wait for /dev/dsp >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Nov 30 20:20:03 GMT 2005 >Closed-Date: >Last-Modified: >Originator: Yuri >Release: 5.4 stable >Organization: N/A >Environment: FreeBSD xxx.xxx.xxx 5.4-RELEASE-p3 FreeBSD 5.4-RELEASE-p3 #0: Thu Jul 7 22:03:34 PDT 2005 xxx@xxx.xxx.xxx:/usr/src/sys/i386/compile/GENERIC i386 >Description: If kernel queue has sound device /dev/dsp in it kevent only being triggered once. Second call to it hangs although data is obviously continuously available from soundcard. relevant dmesg messages describing the card are: pcm0: port 0xdc00-0xdc1f irq 17 at device 6.0 on pci0 pcm0: >How-To-Repeat: compile and run the following code: ----code------ #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int res, kq; int dsp; kq = kqueue(); printf("kqueue returned %i\n", kq); char buf[1024]; dsp = open("/dev/dsp", O_RDONLY); struct kevent kev; EV_SET(&kev, dsp, EVFILT_READ, EV_ADD, 0/*fflags*/, 0/*data*/, NULL); struct kevent result_events[256]; // 1 printf(">kevent1\n"); res = kevent(kq, &kev, 1, &result_events[0], 256, NULL ); printf("read returned %i\n", res); res = read(dsp, buf, sizeof(buf)); printf("kevent2\n"); res = kevent(kq, NULL/*&kev*/, 0, &result_events[0], 256, NULL ); printf("Fix: N/A >Release-Note: >Audit-Trail: >Unformatted: