Menu

#23 recovery fails with assertion failure

open
Peter C
5
2003-11-27
2003-11-27
Anonymous
No

par2repair aborts with the follwing output :

Computing Reed Solomon matrix.
Constructing: done
Repair is required.
3 file(s) are missing.
44 file(s) are ok.
You have 1551 out of 1659 data blocks available.
You have 200 recovery blocks available.
Repair is possible.
You have an excess of 92 recovery blocks.
108 recovery blocks will be used to repair.

par2repair: reedsolomon.h:361: bool
ReedSolomon<g>::GaussElim(unsigned int, unsigned int,
g*, g*, unsigned int) [with g = Galois16]: Assertion
`pivotvalue != 0' failed.
Aborted

"par2 r" produces a similar output. This seems not data
dependent. With other words, I was never be able to
repair missing files.

Greetings
Roman

Discussion

  • Anonymous

    Anonymous - 2003-12-05

    Logged In: YES
    user_id=918943

    Hi Roman,

    I observe the same problem with 0.3. I tried several times with large
    cd-sized files and repairing always resulted in the same assertion
    failure.

    Regards,
    Thomas

     
  • Peter C

    Peter C - 2003-12-07

    Logged In: YES
    user_id=477089

    Exactly which compiler version did you use to compile
    par2cmdline?

    That assert is known to occur when certain pre release
    versions of gcc 3.3 are used.

     
  • Nobody/Anonymous

    Logged In: NO

    Hi Peter,

    thanks for your answer. I used gcc 3.3 (release 23, SuSE 8.2).
    I recompiled with gcc 3.3.1 (release 24, SuSE 9.0) and now it rocks.

    I created par2 files (20% redundency) for a large dar-file (690MB) on
    CD. After writing on the data-side(!) of the CD (ca. 5x25mm^2) I was
    able to recover all data from it using dar_cp & par2cmdline.

    Great stuff! Thanks a lot!

    Regards,
    Thomas

     
  • Maik Nijhuis

    Maik Nijhuis - 2006-11-14

    Logged In: YES
    user_id=1289105
    Originator: NO

    I had the same problem with par2cmdline v0.4. I renamed the .1 files to their original name, overwriting files with only zero-bytes. Then I tried again, but the problem persisted. Of course, the .1 files and the files with zeroes were created again.

    Some volxxx.yy.par2 files were also incomplete, containing 20 recovery blocks instead of 21. This was recognized correctly by par2repair at the start.

    I removed all incomplete volxxx.yy.par2 files, and tried again using 'par2repair file.par2 *.1' and it worked :-) It correctly recognized the data from the *.1 files and I have a succesful repair.

    Could it be that the missing blocks from incomplete volxxx.yy.par2 files are still being used somehow?

     

Log in to post a comment.