gco / rubyripper

Automatically exported from code.google.com/p/rubyripper
0 stars 0 forks source link

Rubyripper hung when Analyzing files for mismatching chunks #450

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
1) Please describe the steps to reproduce the situation:
a.insert audio cd
b.start ripping it and wait until it start to verify mismatching chunks
c.rubyripper is hung

2) What is the expected output? What do you see instead?

3) What version of rubyripper are you using? On what operating system? The
gtk2 of commandline interface?
version of rubyripper is 0.6.0 im also tried version 0.6.0+git20100930 a bug 
still exist in this version
4) Is this not already fixed with the latest & greatest code? See for
instructions the Source tab above.

5) Does the problem happen with all discs? If not, please attach
the output of cdparanoia -Q with a disc that gives trouble.
yes
6) Please explain why this change is important for you. Also, how many
users would benefit from this change?

Please provide any additional information below. The more usefull
information provided, the sooner the issue will be fixed.

Original issue reported on code.google.com by anton.b1...@gmail.com on 19 Nov 2010 at 5:35

GoogleCodeExporter commented 9 years ago
i got following error in terminal:

scsi_read error: sector=265253 length=1 retry=8
                 Sense key: 5 ASC: 21 ASCQ: 0
                 Transport error: Illegal SCSI request (rejected by target)
                 System error: Invalid argument
 (== PROGRESS == [                             >| 265253 31 ] == ;-( . ==)   scsi_read error: sector=265252 length=2 retry=0
                 Sense key: 5 ASC: 21 ASCQ: 0
                 Transport error: Illegal SCSI request (rejected by target)
                 System error: Invalid argument
 (== PROGRESS == [                             >| 265253 32 ] == 8-|   ==)   scsi_read error: sector=265251 length=3 retry=0
                 Sense key: 5 ASC: 21 ASCQ: 0
                 Transport error: Illegal SCSI request (rejected by target)
                 System error: Invalid argument
 (== PROGRESS == [                             C| 265253 32 ] == :^D * ==)   

Done.

More sectors ripped than expected: -1 sector(s)

Original comment by anton.b1...@gmail.com on 19 Nov 2010 at 6:06

GoogleCodeExporter commented 9 years ago
I am having the same problem since I upgraded to Debian Squeeze.  Before that 
everything was fine.  Perhaps this issue is due to an upgrade of the dependency 
software (cdparanoia or ruby)?

Original comment by goweropo...@gmail.com on 9 Feb 2011 at 7:11

GoogleCodeExporter commented 9 years ago
I got the same issue here on Ubuntu Maverick AND Ubuntu Natty.
Why is nothing to be found in the log? How am I to get to the root of this 
problem?
Please help - or better: fix it!

Original comment by olaf.got...@gmail.com on 28 Apr 2011 at 9:47

GoogleCodeExporter commented 9 years ago
When outputting verbose debug information, even there you can find no clue 
whatsoever what happens:
"
 (== PROGRESS == [                              | 320778 00 ] == :^D * ==)   

Done.
"

That's it. No output hinting at what's happening when "analyzing" files!

Original comment by olaf.got...@gmail.com on 28 Apr 2011 at 10:20

GoogleCodeExporter commented 9 years ago
 def analyzeFiles(track)
                @settings['log'].add(_("Analyzing files for mismatching chunks\n"))
                files = Array.new
                @reqMatchesAll.times do |time|
                        files << File.new(@settings['Out'].getTempFile(track, time + 1), 'r')
                end

         ## THIS IS REACHED
                @settings['log'].add(_("Analyzing 0\n"))

                (@reqMatchesAll - 1).times do |time|
                        index = 0 ; files.each{|file| file.pos = 44} # 44 = wav container overhead, 2352 = size for a audiocd sector as used in cdparanoia
                        while index + 44 < @settings['cd'].getFileSize(track)
                                if !@errors.key?(index) && files[0].read(2352) != files[time + 1].read(2352) # Does this sector matches the previous ones? and isn't the position already known?
                                        files.each{|file| file.pos = index + 44} # Reset each read position of the files
                                        @errors[index] = Array.new
                                        files.each{|file| @errors[index] << file.read(2352)} # Save the chunk for all files in the just created array
                                end
                                index += 2352

               ## THIS IS NEVER REACHED!!

                                # @settings['log'].add(_("Analyzing 1\n"))
                        end
                        @settings['log'].add(_("Analyzing 2\n"))
                end

                files.each{|file| file.close}

                # Remove the files now we analyzed them. Differences are saved in memory.
                (@reqMatchesAll - 1).times{|time| File.delete(@settings['Out'].getTempFile(track, time + 2))}

                if @errors.size == 0
                        @settings['log'].add(_("Every chunk matched %s times :)\n") % [@reqMatchesAll])
                else
                        @settings['log'].mismatch(track, @trial, @errors.keys, @settings['cd'].getFileSize(track), @settings['cd'].getLengthSector(track)) # report for later position analysis
                        @settings['log'].add(_("%s chunk(s) didn't match %s times.\n") % [@errors.length, @reqMatchesAll])
                end
        end

Original comment by olaf.got...@gmail.com on 29 Apr 2011 at 6:11

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
I have just tried rubbyripper using "rrip_cli" (the command line interface) - 
it all works very smoothly with *no* long delays. It appears that use of the 
gui raises the problem. Hope that helps.

Original comment by robert77...@gmail.com on 3 May 2011 at 7:40