Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 10 Apr 2009 13:43:20 GMT
From:      Oleg Ginzburg <oleg.ginzburg@nevosoft.ru>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/133564: audio/cdplay ports - bad behavior when cd drive is empty
Message-ID:  <200904101343.n3ADhKAg021149@www.freebsd.org>
Resent-Message-ID: <200904101350.n3ADo1ow027512@freefall.freebsd.org>

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

>Number:         133564
>Category:       ports
>Synopsis:       audio/cdplay ports - bad behavior when cd drive is empty
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Apr 10 13:50:01 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator:     Oleg Ginzburg
>Release:        8.0-CURRENT
>Organization:
no company
>Environment:
FreeBSD oleg.net.nevosoft.ru 8.0-CURRENT FreeBSD 8.0-CURRENT #18 r190838M: Wed Apr  8 13:43:35 MSD 2009     root@oleg.net.nevosoft.ru:/usr/obj/usr/src/sys/o20090103  i386
>Description:
If execute cdplay -d <path_to_device> with empty cd-drive, system come to unstable
for "kern.maxfiles limit exceeded by uid NNNN, please see tuning(7)" reason.

If looks at this time through lsof(8) -p <PID_OF_CDPLAY> i see many repeating 

cdplay  27171 root *116r  VCHR   0,86              0t0       86 /dev/acd0

if connect to PID with truss:
truss -o /usr/out3.txt -p 27087

then examining /usr/out3.txt give looped messages:

..
nanosleep({2.000000000 })                        = 0 (0x0)
open("/dev/acd0",O_RDONLY,00)                    ERR#23 'Too many open files in system'
nanosleep({2.000000000 })                        = 0 (0x0)
open("/dev/acd0",O_RDONLY,00)                    ERR#23 'Too many open files in system'
nanosleep({2.000000000 })                        = 0 (0x0)
..

My CD-ROM hardware/vendor: DVDR <NEC DVD RW ND-3520A/1.04>
>How-To-Repeat:
Eject cdrom drive and remove any disc
cdplay -f /dev/acd (if acd0 - is correct cd drive) and watching.

>Fix:
IMHO needs some interval of seconds for attempts to open CD (if cdrom starts slowly) or error count and exit where num of errors overflow. Somewhere close to  69 strings of cd.c


..
/* Used to initalise cd */
void init_cd(void)
{
  struct ioc_read_toc_entry read_entry;
  struct cd_toc_entry toc_buffer[100];
  int i;

69:  while((cd_fd=open(cd_device,O_RDONLY))<0) sleep(2);

  cdinfo.eject=0;
..





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



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