#3861 closed bug (fixed)
iso9660 has issues with various discs burned on a mac
Reported by: | anevilyak | Owned by: | axeld |
---|---|---|---|
Priority: | normal | Milestone: | R1 |
Component: | File Systems/ISO 9660 | Version: | R1/pre-alpha1 |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description (last modified by )
A disc I burned on my Mac appears to have major interpretation problems with our iso9660 driver. The actual contents of the disc look as follows:
05/03/2009 11:20 AM 17,313,824 Helmer_altMoviePoster.jpg 04/13/2009 03:01 PM 209,176,224 Helmer_altMoviePoster.psd 05/03/2009 11:08 AM 4,106,772 Helmer_MoviePoster.jpg 04/13/2009 03:02 PM 134,074,020 Helmer_MoviePoster.psd 4 File(s) 364,670,840 bytes 0 Dir(s) 0 bytes free
However, our iso9660 add-on claims this instead:
total 591 dr-xr-xr-x 0 rene root 2048 May 3 16:47 . drwxrwxrwx 1 rene root 0 May 3 17:03 .. -r--r--r-- 0 rene root 91095 May 3 11:08 Helmer_MoviePoster.jpg -r--r--r-- 0 rene root 91095 May 3 11:08 Helmer_MoviePoster.jpg -r--r--r-- 0 rene root 54130 Apr 13 15:02 Helmer_MoviePoster.psd -r--r--r-- 0 rene root 54130 Apr 13 15:02 Helmer_MoviePoster.psd -r--r--r-- 0 rene root 98113 May 3 11:20 Helmer_altMoviePoster.jpg -r--r--r-- 0 rene root 98113 May 3 11:20 Helmer_altMoviePoster.jpg -r--r--r-- 0 rene root 57832 Apr 13 15:01 Helmer_altMoviePoster.psd -r--r--r-- 0 rene root 57832 Apr 13 15:01 Helmer_altMoviePoster.psd
None of the files are usable. Syslog of that CD insertion:
Media changed from /dev/disk/atapi/4/master/raw KDiskDeviceManager::_ScanPartition(/dev/disk/atapi/4/master/raw) intel: ep_std_ops(0x1) trying: partitioning_systems/intel/extended/v1 returned: -1 intel: ep_std_ops(0x2) trying: partitioning_systems/intel/map/v1 intel: pm_identify_partition(8, 1: 0, 366448640, 2048) returned: -1 trying: file_systems/bfs/v1 returned: -1 trying: file_systems/devfs/v1 returned: -1 trying: file_systems/rootfs/v1 returned: -1 trying: partitioning_systems/session/v1 raw_command: returned: 0.699 trying: file_systems/attribute_overlay/v1 returned: -1 trying: file_systems/cdda/v1 raw_command: 01. 00:02.00 (length 39:45.55) returned: -2147483648 trying: file_systems/ext2/v1 returned: -2147483648 trying: file_systems/fat/v1 returned: -1 trying: file_systems/iso9660/v1 identify(8, 0x811f9130) found primary descriptor iso9660_primary_descriptor: volume descriptor type: 1 (primary) standard identifier: CD001 (valid) version: 1 identifier: 'PORTFOLIODISC1' size: 178780 set size: 1 sequence number: 1 logical block size: 2048 path table size: 10 set identifier: root directory record: length: 34 location: 41 data length: 2048 volume space: 1 iso9660_info::set_string(0x811f9130 ('<NULL>'), 'PORTFOLIODISC1', 32) returned: 0.6 trying: file_systems/nfs/v1 returned: -1 trying: file_systems/userlandfs/v1 returned: -1 trying: file_systems/write_overlay/v1 returned: -1 scanning with: partitioning_systems/session/v1 KDiskDeviceManager::_ScanPartition(/dev/disk/atapi/4/master/0) intel: ep_std_ops(0x1) trying: partitioning_systems/intel/extended/v1 returned: -1 intel: ep_std_ops(0x2) trying: partitioning_systems/intel/map/v1 intel: pm_identify_partition(8, 10: 0, 366448640, 2048) returned: -1 trying: file_systems/bfs/v1 returned: -1 trying: file_systems/devfs/v1 returned: -1 trying: file_systems/rootfs/v1 returned: -1 trying: partitioning_systems/session/v1 returned: -1 trying: file_systems/attribute_overlay/v1 returned: -1 trying: file_systems/cdda/v1 raw_command: 01. 00:02.00 (length 39:45.55) returned: -2147483648 trying: file_systems/ext2/v1 returned: -2147483648 trying: file_systems/fat/v1 returned: -1 trying: file_systems/iso9660/v1 identify(8, 0x811f9120) found primary descriptor iso9660_primary_descriptor: volume descriptor type: 1 (primary) standard identifier: CD001 (valid) version: 1 identifier: 'PORTFOLIODISC1' size: 178780 set size: 1 sequence number: 1 logical block size: 2048 path table size: 10 set identifier: root directory record: length: 34 location: 41 data length: 2048 volume space: 1 iso9660_info::set_string(0x811f9120 ('<NULL>'), 'PORTFOLIODISC1', 32) returned: 0.6 trying: file_systems/nfs/v1 returned: -1 trying: file_systems/userlandfs/v1 returned: -1 trying: file_systems/write_overlay/v1 returned: -1 scanning with: file_systems/iso9660/v1 ISOMount - ENTER B_GET_PARTITION_INFO: ioctl returned error ISOMount: open device/file "/dev/disk/atapi/4/master/0" ISOMount: Is an ISO9660 volume, initting rec InitVolDesc - ENTER InitVolDesc - system id string is APPLE COMPUTER, INC., TYPE: 0002 InitVolDesc - volume id string is PORTFOLIODISC1 InitNode - ENTER, bufstart is 0x82e6b7a7, record length is 34 bytes InitNode - data start LBN is 41 InitNode - data length is 2048 InitNode - flags are 2 InitNode - fileUnitSize is 0 InitNode - interleave gap size = 0 InitNode - volume seq num is 16777217 InitNode - file id length is 1 DirRec ID String is: . RR: Start of extensions at 0x82e6b7c8 InitVolDesc - volume set id string is InitVolDesc - volume pub id string is InitVolDesc - volume dataPreparer string is InitVolDesc - volume app id string is InitVolDesc - copyright is ISO9660: volume->blockSize = 2048 ISOMount: block size multiplier is 1 ISO9660: cache init: dev 9, max blocks 178780 ISO9660 Extensions: Microsoft Joliet Level 1 InitNode - ENTER, bufstart is 0x82e6b7a7, record length is 34 bytes InitNode - data start LBN is 44 InitNode - data length is 2048 InitNode - flags are 2 InitNode - fileUnitSize is 0 InitNode - interleave gap size = 0 InitNode - volume seq num is 16777217 InitNode - file id length is 1 DirRec ID String is: . RR: Start of extensions at 0x82e6b7c8 ISOMount - EXIT, returning 0x819c0800 Media changed from /dev/disk/atapi/4/master/raw KDiskDeviceManager::_ScanPartition(/dev/disk/atapi/4/master/raw) intel: ep_std_ops(0x1) trying: partitioning_systems/intel/extended/v1 returned: -1 intel: ep_std_ops(0x2) trying: partitioning_systems/intel/map/v1 intel: pm_identify_partition(8, 1: 0, 366448640, 2048) returned: -1 trying: file_systems/bfs/v1 returned: -1 trying: file_systems/devfs/v1 returned: -1 trying: file_systems/rootfs/v1 returned: -1 trying: partitioning_systems/session/v1 raw_command: returned: 0.699 trying: file_systems/attribute_overlay/v1 returned: -1 trying: file_systems/cdda/v1 raw_command: 01. 00:02.00 (length 39:45.55) returned: -2147483648 trying: file_systems/ext2/v1 returned: -2147483648 trying: file_systems/fat/v1 returned: -1 trying: file_systems/iso9660/v1 identify(8, 0x8118cec0) found primary descriptor iso9660_primary_descriptor: volume descriptor type: 1 (primary) standard identifier: CD001 (valid) version: 1 identifier: 'PORTFOLIODISC1' size: 178780 set size: 1 sequence number: 1 logical block size: 2048 path table size: 10 set identifier: root directory record: length: 34 location: 41 data length: 2048 volume space: 1 iso9660_info::set_string(0x8118cec0 ('<NULL>'), 'PORTFOLIODISC1', 32) returned: 0.6 trying: file_systems/nfs/v1 returned: -1 trying: file_systems/userlandfs/v1 returned: -1 trying: file_systems/write_overlay/v1 returned: -1 scanning with: partitioning_systems/session/v1 KDiskDeviceManager::_ScanPartition(/dev/disk/atapi/4/master/0) intel: ep_std_ops(0x1) trying: partitioning_systems/intel/extended/v1 returned: -1 intel: ep_std_ops(0x2) trying: partitioning_systems/intel/map/v1 intel: pm_identify_partition(8, 11: 0, 366448640, 2048) returned: -1 trying: file_systems/bfs/v1 returned: -1 trying: file_systems/devfs/v1 returned: -1 trying: file_systems/rootfs/v1 returned: -1 trying: partitioning_systems/session/v1 returned: -1 trying: file_systems/attribute_overlay/v1 returned: -1 trying: file_systems/cdda/v1 raw_command: 01. 00:02.00 (length 39:45.55) returned: -2147483648 trying: file_systems/ext2/v1 returned: -2147483648 trying: file_systems/fat/v1 returned: -1 trying: file_systems/iso9660/v1 identify(8, 0x8118ceb0) found primary descriptor iso9660_primary_descriptor: volume descriptor type: 1 (primary) standard identifier: CD001 (valid) version: 1 identifier: 'PORTFOLIODISC1' size: 178780 set size: 1 sequence number: 1 logical block size: 2048 path table size: 10 set identifier: root directory record: length: 34 location: 41 data length: 2048 volume space: 1 iso9660_info::set_string(0x8118ceb0 ('<NULL>'), 'PORTFOLIODISC1', 32) returned: 0.6 trying: file_systems/nfs/v1 returned: -1 trying: file_systems/userlandfs/v1 returned: -1 trying: file_systems/write_overlay/v1 returned: -1 scanning with: file_systems/iso9660/v1 ISOMount - ENTER B_GET_PARTITION_INFO: ioctl returned error ISOMount: open device/file "/dev/disk/atapi/4/master/0" ISOMount: Is an ISO9660 volume, initting rec InitVolDesc - ENTER InitVolDesc - system id string is APPLE COMPUTER, INC., TYPE: 0002 InitVolDesc - volume id string is PORTFOLIODISC1 InitNode - ENTER, bufstart is 0x82e6b7a7, record length is 34 bytes InitNode - data start LBN is 41 InitNode - data length is 2048 InitNode - flags are 2 InitNode - fileUnitSize is 0 InitNode - interleave gap size = 0 InitNode - volume seq num is 16777217 InitNode - file id length is 1 DirRec ID String is: . RR: Start of extensions at 0x82e6b7c8 InitVolDesc - volume set id string is InitVolDesc - volume pub id string is InitVolDesc - volume dataPreparer string is InitVolDesc - volume app id string is InitVolDesc - copyright is ISO9660: volume->blockSize = 2048 ISOMount: block size multiplier is 1 ISO9660: cache init: dev 9, max blocks 178780 ISO9660 Extensions: Microsoft Joliet Level 1 InitNode - ENTER, bufstart is 0x82e6b7a7, record length is 34 bytes InitNode - data start LBN is 44 InitNode - data length is 2048 InitNode - flags are 2 InitNode - fileUnitSize is 0 InitNode - interleave gap size = 0 InitNode - volume seq num is 16777217 InitNode - file id length is 1 DirRec ID String is: . RR: Start of extensions at 0x82e6b7c8 ISOMount - EXIT, returning 0x819c0800
Let me know if you need any other information, I can make these discs pretty much at will.
-- updated log with TRACE_ISO9660 enabled.
Change History (18)
comment:1 by , 16 years ago
Description: | modified (diff) |
---|
comment:2 by , 16 years ago
comment:3 by , 16 years ago
Another note of interest: FreeBSD lists the entries twice also, but with a slight name difference:
-r-xr-xr-x 1 root wheel 91095 May 3 11:08 =Helmer_MoviePoster.jpg -r-xr-xr-x 1 root wheel 54130 Apr 13 15:02 =Helmer_MoviePoster.psd -r-xr-xr-x 1 root wheel 98113 May 3 11:20 =Helmer_altMoviePoster.jpg -r-xr-xr-x 1 root wheel 57832 Apr 13 15:01 =Helmer_altMoviePoster.psd -r-xr-xr-x 1 root wheel 4106772 May 3 11:08 Helmer_MoviePoster.jpg -r-xr-xr-x 1 root wheel 134074020 Apr 13 15:02 Helmer_MoviePoster.psd -r-xr-xr-x 1 root wheel 17313824 May 3 11:20 Helmer_altMoviePoster.jpg -r-xr-xr-x 1 root wheel 209176224 Apr 13 15:01 Helmer_altMoviePoster.psd
Note also that the sizes on the =-prefixed names match the ones reported on Haiku. The second set are correct though.
comment:5 by , 16 years ago
Will try and see how small a disc I can replicate that problem with, as you can see the current one is 300MB of image data so it wouldn't really compress well. If I can make a small one of just the jpegs with the same issue after work, I'll put it on Vision's sourceforge page and post the link here.
comment:6 by , 16 years ago
Replying to axeld:
Would it be possible to upload a small ISO somewhere?
http://vision.sf.net/problem.iso.zip
Should be 39765799 bytes and have an md5 hash of: 1f08bfaa60286079248e3f7dc575e783 .
This one displays the same characteristics in FreeBSD as the listing in the ticket description, but also has the fun property that it causes Haiku's ISO9660 add-on to KDL with a page fault when you attempt to list it (mounting does work though).
comment:7 by , 16 years ago
Backtrace from above mentioned panic:
PANIC: vm_page_fault: unhandled page fault in kernel space at 0x92700000, ip 0x807a3fea Welcome to Kernel Debugging Land... Thread 210 "add poses" running on CPU 0 kdebug> bt stack trace for thread 210 "add poses" kernel stack: 0x91ba8000 to 0x91bac000 user stack: 0x781c7000 to 0x78207000 frame caller <image>:function + offset 0 91bab910 (+ 48) 8006584d <kernel_x86>:invoke_debugger_command + 0x00f5 1 91bab940 (+ 64) 8006563d <kernel_x86> invoke_pipe_segment(debugger_command_pipe*: 0x80136b20, int32: 0, 0x0 "<NULL>") + 0x0079 2 91bab980 (+ 64) 800659c4 <kernel_x86>:invoke_debugger_command_pipe + 0x009c 3 91bab9c0 (+ 48) 80066f74 <kernel_x86> ExpressionParser<0x91baba74>::_ParseCommandPipe(0x91baba70) + 0x0234 4 91bab9f0 (+ 64) 800663ae <kernel_x86> ExpressionParser<0x91baba74>::EvaluateCommand(0x80126e00 "bt", 0x91baba70) + 0x02ba 5 91baba30 (+ 224) 8006839c <kernel_x86>:evaluate_debug_command + 0x0088 6 91babb10 (+ 64) 800636c6 <kernel_x86> kernel_debugger_loop() + 0x01ae 7 91babb50 (+ 32) 800645cd <kernel_x86>:kernel_debugger + 0x004d 8 91babb70 (+ 192) 80064575 <kernel_x86>:panic + 0x0029 9 91babc30 (+ 80) 800ca16d <kernel_x86>:vm_page_fault + 0x0139 10 91babc80 (+ 64) 800dab8d <kernel_x86>:page_fault_exception + 0x00d9 11 91babcc0 (+ 12) 800de2b6 <kernel_x86>:int_bottom + 0x0036 kernel iframe at 0x91babccc (end = 0x91babd1c) eax 0x800 ebx 0x807a7418 ecx 0x926ff800 edx 0x8145d668 esi 0x800 edi 0x0 ebp 0x91babe44 esp 0x91babd00 eip 0x807a3fea eflags 0x10286 vector: 0xe, error code: 0x0 12 91babccc (+ 376) 807a3fea </boot/system/add-ons/kernel/file_systems/iso9660> ISOReadDirEnt(iso9660_volume*: 0x909aa800, dircookie*: 0x8145d668, dirent*: 0x180759c5, uint32: 0x2473 (9331)) + 0x00ea 13 91babe44 (+ 48) 807a5bc0 </boot/system/add-ons/kernel/file_systems/iso9660> fs_read_dir(fs_volume*: 0x8131d988, fs_vnode*: 0x813223fc, 0x8145d668, dirent*: 0x180759c5, uint32: 0x2473 (9331), 0x91babf40) + 0x0030 14 91babe74 (+ 80) 800a7683 <kernel_x86> dir_read(io_context*: 0x8126c908, vnode*: 0x813223fc, 0x8145d668, dirent*: 0x180759c5, uint32: 0x2473 (9331), 0x91babf40) + 0x004b 15 91babec4 (+ 64) 800a7417 <kernel_x86> dir_read(io_context*: 0x8126c908, file_descriptor*: 0x8145d6b8, dirent*: 0x180759c5, uint32: 0x2473 (9331), 0x91babf40) + 0x002b 16 91babf04 (+ 64) 8009644d <kernel_x86>:_user_read_dir + 0x0069 17 91babf44 (+ 100) 800de4f1 <kernel_x86>:handle_syscall + 0x00be user iframe at 0x91babfa8 (end = 0x91bac000) eax 0x86 ebx 0x456c04 ecx 0x78206a10 edx 0xffff0104 esi 0x180759c5 edi 0x1809df08 ebp 0x78206a3c esp 0x91babfdc eip 0xffff0104 eflags 0x246 user esp 0x78206a10 vector: 0x63, error code: 0x0 18 91babfa8 (+ 0) ffff0104 <commpage>:commpage_syscall + 0x0004 19 78206a3c (+ 48) 0052c318 <libtracker.so> BPrivate::CachedEntryIterator<0x1809ded8>::GetNextDirents(dirent*: 0x78206b68, uint32: 0x400 (1024), int32: 1) + 0x0078 20 78206a6c (+1344) 00597fe5 <libtracker.so> BPrivate::BPoseView<0x18102b68>::AddPosesTask(NULL) + 0x0379 21 78206fac (+ 48) 00682d58 <libroot.so>:_get_next_team_info (nearest) + 0x005c 22 78206fdc (+ 0) 78206fec 6354:add poses_210_stack@0x781c7000 + 0x3ffec kdebug>
Note that while this one is in Tracker's add poses thread, the exact same panic happens with ls -la via Terminal.
follow-up: 9 comment:8 by , 16 years ago
The iso9660_shell (available again since hrev30639) does not exhibit the crash, but otherwise shows the same problem. Should be easier to debug there.
comment:9 by , 16 years ago
Replying to axeld:
The iso9660_shell (available again since hrev30639) does not exhibit the crash, but otherwise shows the same problem. Should be easier to debug there.
Cool, let me know if you need anything else for reference. As far as I can tell any CD I burn via OSX Leopard's Finder shows the exact same dir structure problems, though the KDL seems to be hit or miss.
comment:10 by , 16 years ago
The crashing part is fixed in hrev30640 - this bug was probably hidden by the userland allocator.
follow-up: 12 comment:11 by , 16 years ago
The data accessible from Haiku looks like the MacOS resouce forks, at least that's what I would assume.
comment:12 by , 16 years ago
Replying to axeld:
The data accessible from Haiku looks like the MacOS resouce forks, at least that's what I would assume.
Ahh, that's entirely possible. Is the function that sanitizes filenames by any chance stripping out a filename prefix character that OSX uses to differentiate between the file and the resource data here by any chance?
comment:13 by , 16 years ago
Some issues with this ISO image are fixed in hrev30655. However, the file data and length is still bogus - apparently, we don't support ISO level 3 extents.
The archive manager/mounter combo under Ubuntu also has its problems with this ISO, btw.
follow-up: 15 comment:14 by , 16 years ago
On second thought, though, it can't really be an ISO level 3 problem, as the highest bit of the flags field is not set. Maybe something with the block size; the files are not just too small, they also seem to have the wrong contents; the actual file content does not contain whatever we see in Haiku.
comment:15 by , 16 years ago
Replying to axeld:
On second thought, though, it can't really be an ISO level 3 problem, as the highest bit of the flags field is not set. Maybe something with the block size; the files are not just too small, they also seem to have the wrong contents; the actual file content does not contain whatever we see in Haiku.
Would it help debugging at all to have another ISO to compare against with a different set of files? Nice work so far in any case :)
comment:16 by , 16 years ago
No thanks, I guess besides time I have everything I need :-)
Maybe someone else comes along with a fix in the mean time ;-))
Also, trace log from when running the ls -la that resulted in the above output: