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>