I was trying to use xcdroast and it kept failing during the reading of data from the CD. Using "xcdroast -d 1" I saw the xcdroast runs the command cdda2wav like this: x1-6-00-50-2c-02-55-54:~/cdda2wav#cdda2wav -D "1,0,0" -g -O wav -S 40 -v all -P 0 -n 75 -paranoia -paraopts=retries=20 -B "track-01.wav" "track-02.wav" "track-0 3.wav" "track-04.wav" "track-05.wav" "track-06.wav" "track-07.wav" "track-08.wav " "track-09.wav" "track-10.wav" "track-11.wav" "track-12.wav" "track-13.wav" "tr ack-14.wav" Type: ROM, Vendor 'LITE-ON ' Model 'LTR-24102B ' Revision '5S07' MMC+CDDA 266240 bytes buffer memory requested, 4 buffers, 27 sectors #Cdda2wav version 2.00.3_freebsd_5.1-release-p13_i386_i386, real time sched., so undcard, libparanoia support Tracks:14 46:28.32 CDINDEX discid: W2_EXuJmN5nw13xvsoU.aExv_Xg- CDDB discid: 0xb50ae20e CD-Text: not detected CD-Extra: not detected Album title: '' from '' T01: 0 3:08.65 audio linear copydenied stereo title '' from '' T02: 14165 2:55.55 audio linear copydenied stereo title '' from '' T03: 27345 2:34.05 audio linear copydenied stereo title '' from '' T04: 38900 2:50.65 audio linear copydenied stereo title '' from '' T05: 51715 3:30.37 audio linear copydenied stereo title '' from '' T06: 67502 3:11.38 audio linear copydenied stereo title '' from '' T07: 81865 2:55.17 audio linear copydenied stereo title '' from '' T08: 95007 3:19.20 audio linear copydenied stereo title '' from '' T09: 109952 3:56.65 audio linear copydenied stereo title '' from '' T10: 127717 3:03.40 audio linear copydenied stereo title '' from '' T11: 141482 3:57.08 audio linear copydenied stereo title '' from '' T12: 159265 3:51.25 audio linear copydenied stereo title '' from '' T13: 176615 2:33.25 audio linear copydenied stereo title '' from '' T14: 188115 4:38.17 audio linear copydenied stereo title '' from '' Leadout: 208982 No media catalog number present. scanning for ISRCs: 14 ... index scan: 14...samplefile size will be 491525708 bytes. recording 2786.4266 seconds stereo with 16 bits @ 44100.0 Hz ->'track-01'... using lib paranoia for reading. child pid is 51260 percent_done: 0%cdda2wav: Argument list too long. Cannot send SCSI cmd via ioctl W Child exited with 2 I have an ATA CD drive and I'm using atapicam to emulate having a SCSI CD drive, because xcdroast doesn't support ATAPI CD drives. I've never hacked around with this stuff, but here's my best guess as to what's going wrong: cdda2wav is generating a ccb to send to the CAM XPT module. ATAPICAM needs to map the userland data into kernel land for the transfer. To make sure that it fits within a page boundary, there is a check made in sys/cam/cam_periph.c: if ((lengths[i] + (((vm_offset_t)(*data_ptrs[i])) & PAGE_MASK)) > DFLTPHYS){ printf("cam_periph_mapmem: attempt to map %lu bytes, " "which is greater than DFLTPHYS(%d)\n", (long)(lengths[i] + (((vm_offset_t)(*data_ptrs[i])) & PAGE_MASK)), DFLTPHYS); cdda2wav isn't aligning the data_ptr properly each time, so the check fails sometimes. Fix: Have cdda2wav send properly aligned addresses, or shink the transfer size down so that the data fits within a page. I'm not sure how difficult this will be. How-To-Repeat: Need a system with an ATA CD drive, using cdda2wav and atapicam. Run this command as root: cdda2wav -V -D "1,0,0" -g -O wav -S 40 -v toc,summary,sectors,titles -P 0 -n 75 -paranoia -paraopts=retries=20 -B "track-01.wav" "track-02.wav" "track-03.wav" "track-04.wav" "track-05.wav" "track-06.wav" "track-07.wav" "track-08.wav" "track-09.wav" "track-10.wav" "track-11.wav" "track-12.wav" "track-13.wav" "track-14.wav" In my tests, the first ccb always has an aligned pointer, but the second one isn't.
Responsible Changed From-To: freebsd-ports-bugs->marius Maintainer is now committer.
State Changed From-To: open->closed A workaround limiting the transfer size was added, thanks for the report!