From: Albert Wagner Date: 2002-01-06T14:49:56+09:00 Subject: [ruby-talk:30334] Re: Structs and Marshalling On Saturday 05 January 2002 06:25 am, you wrote: > > Well, it's best if you give a small example because I can't reproduce the > problem. > > > Guy Decoux Hi, Guy. Of course I have an example, but it's not small. It's 2 scripts totaling 5.2k and 5 text files totaling 28.3k: 33.5k total. I don't know how to make it any smaller because the problem occurs while loading the 5 text files in a loop that converts lines into records and then marshals the records. The error I receive: bdbtst.rb:48:in `load': incompatible marshal file format (can't be read) (TypeError) format version 4.6 required; 168.29 given occurs at, what to me appear, random times, typically after 3 of the 5 files have converted and the 4th is in process. But the problem is not with the data in the 4th file. The order in which the files are processed can be altered so that one that has previously failed succeeds and one that previously succeeded fails. The message originates in marshal.c in the ruby source, where the marshal major and minor version is checked in the "load" routine. As noted in the error, 4.6 is the correct maj.min number and the "given" number, 168.29 in the error, actually ranges all over and is different with each failure. It seems that the marshal version is being trashed somehow. I don't know C and therefore can't get much of a clue where to look for the problem. It does seem odd to me that the marshal "load" routine is being invoked when the record is being written. But what do I know? The logic may require it. I can send you, or anyone else who cares to look, the files that will duplicate the error for you. OK? Albert