#66153 closed defect (fixed)
cdparanoia: Assertion failed: (range.location + range.length <= dataLength), function __CFDataValidateRange, file CFData.c, line 235
Reported by: | Jtaillan | Owned by: | jeremyhu (Jeremy Huddleston Sequoia) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | |
Keywords: | ventura | Cc: | chrstphrchvz (Christopher Chavez) |
Port: | cdparanoia |
Description (last modified by ryandesign (Ryan Carsten Schmidt))
Whatever the command I give, I always get the same error. For example :
$ cdparanoia -A cdparanoia III release 10.2 (September 11, 2008) Using cdda library version: 10.2 Using paranoia library version: 10.2 Assertion failed: (range.location + range.length <= dataLength), function __CFDataValidateRange, file CFData.c, line 235
I *think* this worked flawlessly on MacOS 12.X
Change History (12)
comment:1 Changed 23 months ago by ryandesign (Ryan Carsten Schmidt)
Description: | modified (diff) |
---|---|
Keywords: | ventura arm64 added |
Owner: | set to jeremyhu |
Port: | cdparanoia added |
Status: | new → assigned |
Summary: | Error using cdparanoia on M1 Mac running 13.0 → cdparanoia: Assertion failed: (range.location + range.length <= dataLength), function __CFDataValidateRange, file CFData.c, line 235 |
comment:2 Changed 20 months ago by kencu (Ken)
comment:3 Changed 20 months ago by chrstphrchvz (Christopher Chavez)
The reporter replied via email https://lists.macports.org/pipermail/macports-dev/2023-January/044912.html:
I think you tested without a music CD in the drive…
Could you please retry the test with a music CD? I can confirm I still see the problem with Ventura 13.2
comment:4 Changed 20 months ago by chrstphrchvz (Christopher Chavez)
I have not reproduced this issue myself nor looked into it deeply, but from finding a similar error in another program (see https://github.com/xmrig/xmrig/issues/3185 and https://github.com/xmrig/xmrig/commit/770b71c), I suspect the bug is near https://github.com/macports/macports-ports/blob/d3272007c0ea/audio/cdparanoia/files/osx_interface.patch#L459-L468: CFGetDataBytes()
is being called with a range of CFRangeMake(0, CFDataGetLength(data) + 1)
, whereas https://developer.apple.com/documentation/corefoundation/1541940-cfdatagetbytes?language=objc says that a range of CFRangeMake(0, CFDataGetLength(data))
should be used when retrieving all data.
comment:5 Changed 20 months ago by chrstphrchvz (Christopher Chavez)
Cc: | chrstphrchvz added |
---|
comment:6 Changed 20 months ago by kencu (Ken)
I don't have a CD drive for the arm64 Mac, but the assertion does happen on an Intel Ventura system when a CD is in the drive. Let me see if Chris' find fixes it.
comment:7 Changed 20 months ago by kencu (Ken)
Yup, good find:
% uname -a Darwin MacBookPro-2012 22.2.0 Darwin Kernel Version 22.2.0: Fri Nov 11 02:08:47 PST 2022; root:xnu-8792.61.2~4/RELEASE_X86_64 x86_64
% cdparanoia -A cdparanoia III release 10.2 (September 11, 2008) Using cdda library version: 10.2 Using paranoia library version: 10.2 track_num = 160 start sector 4350 msf: 1,0,0 track_num = 161 start sector 58350 msf: 13,0,0 track_num = 162 start sector 227540 msf: 50,35,65 track_num = 1 start sector 0 msf: 0,2,0 track_num = 2 start sector 13887 msf: 3,7,12 track_num = 3 start sector 27852 msf: 6,13,27 track_num = 4 start sector 48390 msf: 10,47,15 track_num = 5 start sector 70827 msf: 15,46,27 track_num = 6 start sector 86352 msf: 19,13,27 track_num = 7 start sector 102900 msf: 22,54,0 track_num = 8 start sector 117642 msf: 26,10,42 track_num = 9 start sector 136590 msf: 30,23,15 track_num = 10 start sector 152585 msf: 33,56,35 track_num = 11 start sector 165180 msf: 36,44,30 track_num = 12 start sector 185457 msf: 41,14,57 track_num = 13 start sector 204627 msf: 45,30,27 Attempting to set cdrom to full speed... drive returned OK.
I changed just one line in osx_interface.patch, from:
+ buf_len = CFDataGetLength(data) + 1;
to
+ buf_len = CFDataGetLength(data);
I suppose we should test that on at least one or two older systems, but it seems a simple, solid fix so should be no problems. Presumably Ventura is increasingly strict about buffer overruns.
comment:8 Changed 20 months ago by kencu (Ken)
Keywords: | arm64 removed |
---|
comment:9 Changed 20 months ago by kencu (Ken)
yes, works fine with the new buffer length on Lion, including extracting audio files. LGTM.
comment:10 Changed 20 months ago by kencu (Ken)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:11 Changed 20 months ago by Jtaillan
Sorry but this doesn't fix the problem here :
chaconne$ uname -a Darwin chaconne.local 22.3.0 Darwin Kernel Version 22.3.0: Thu Jan 5 20:48:54 PST 2023; root:xnu-8792.81.2~2/RELEASE_ARM64_T6000 arm64
chaconne$ cdparanoia -B -r cdparanoia III release 10.2 (September 11, 2008) Assertion failed: (range.location + range.length <= dataLength), function __CFDataValidateRange, file CFData.c, line 235. zsh: abort cdparanoia -B -r
comment:12 Changed 20 months ago by Jtaillan
My mistake. I somehow mixed the old and the new version during my tests.
Th new version is indeed working great. Thanks for the fix!
no assertions for me on an arm64 Mac running 13.2: