[haiku-bugs] [Haiku] #6036: Read from cd failure (ISO9660 haiku-r1-alpha2.iso)

  • From: "aldeck" <trac@xxxxxxxxxxxx>
  • Date: Wed, 19 May 2010 22:48:17 -0000

#6036: Read from cd failure (ISO9660 haiku-r1-alpha2.iso)
-----------------------+----------------------------------------------------
 Reporter:  aldeck     |       Owner:  nobody   
     Type:  bug        |      Status:  new      
 Priority:  normal     |   Milestone:  R1       
Component:  - General  |     Version:  R1/alpha2
 Keywords:             |    Platform:  All      
Blockedby:             |       Patch:  0        
 Blocking:             |  
-----------------------+----------------------------------------------------
 Read from cd failure (ISO9660 haiku-r1-alpha2.iso)

 Reading fails on the file apps/WebPositive/libwebcore.so always at
 19,922,944 (0x1300000) bytes in length.[[BR]]
 The correct length of libwebcore.so is 20,993,020.

 > tail -f /var/log/syslog

 > KERN: ata 0 error: command failed, error bit is set. status 0x51, error
 0x54[[BR]]
 > KERN: atapi 0-0 error: device indicates transfer error after dma[[BR]]
 > KERN: check_sense: Illegal request[[BR]]
 > KERN: file_cache: read pages failed: General system error[[BR]]


 The cd checksum is valid on linux, {{{dd if=/dev/sr0 | md5sum}}}

 Another test: with that same cd, extracting libwebcore.so from the cd
 succeeds on linux (with correct size and checksum) although it fails on
 haiku (r36829 from trunk) (same machine, same cd).

 This is the ISO9660 image, anyboot has no problem. Reproducible running on
 alpha2 (live cd installer) and r36829 from trunk.

 Machine is a recent and reliable Q6600 / 4GB.

 Attached is the result of the instructions from Ingo quoted below
 (cf //www.freelists.org/post/haiku/trouble-installing-R1A2,19 )
 {{{
 First of all install a
 breakpoint where the first error message is logged
 (ATAChannel::FinishRequest()):

   breakpoints ([symbol FinishRequest__10ATAChannel] + 0x129)

 Then trigger the error (I guess a "cat .../libwebcore.so > /dev/null"
 should
 do). I'm not sure, if ATAChannel::FinishRequest() is executed in the same
 thread that requests the I/O operation. If not, find the thread ("calling
 periph_io") and get a stack trace. The second parameter of periph_io() is
 an
 io_operation* -- pass it to the "io_operation" command. The operation has
 a
 parent -- pass it to "io_request". This one might also have parent ->
 "io_request". And so on. The stack trace should also yield an IOCache or
 IOSchedulerSimple pointer (depending on which is used). Please pass it to
 "io_scheduler". Also use the address for a "dw <address> 32".
 }}}

-- 
Ticket URL: <http://dev.haiku-os.org/ticket/6036>
Haiku <http://dev.haiku-os.org>
Haiku - the operating system.

Other related posts: