Re: now this is weird

brian <briand-/[email protected]> Mon, 13 Oct 2008 06:54:10 -0700
Newsgroups gmane.comp.lang.sml.smlnj
Message-ID <[email protected]>
John,


Sorry, that was a lousy bug report.

On Oct 13, 2008, at 12:18 AM, John Reppy wrote:

> I missing some context here.
>
>   1) what version of SML/NJ aree you using?
>

110.67

>   2) what OS are you running on?

Mac OS X 10.4.11

>
>   3) what are Writers.binXWriter/binYWriter doing?
>

_very_ simple routines to write binary files.  I use them everywhere,  
I only have a problem here and only when I remove the print statement  
which precedes the first write.

I put trace prints in and verified that it is the open that failed  
using that very reasonable looking filename (which did not get  
corrupted according to the prints).

Then I got tricky and used ktrace :-)

Yeah verily the file name is being corrupted when the print is not  
present !!


  16188 run.ppc-darwin GIO   fd 1 wrote 39 bytes
        "writeBinVector 'data/sync_103_mag.bin'
        "
  16188 run.ppc-darwin RET   write 39/0x27
  16188 run.ppc-darwin CALL  open(0xbe6cc,0x601,0x1b6)
  16188 run.ppc-darwin NAMI  "data/sync_103_mag.bin^O<FF><FF>"

Notice how the print of the filename is ok and yet the open fails  
with a corrupt filename.  the print occurs THE LINE BEFORE OPEN:

fun writeBinVector formatter =
     fn  (filename, v) =>
         let val _ = print ("writeBinVector '"^filename^"'\n")
             val ostr = BinIO.openOut(filename)
             val _ = print ("file open\n")

!!!

Brian

P.S. is there a good way to write reals out as binary values (either  
as floats or doubles) ? I tried using blastWrite to do a binary  
conversion but it failed on my 800k length vector :-(
PackReal doesn't seem to exist.

>
> On Oct 13, 2008, at 7:01 AM, brian wrote:
>
>>
>> changing my code from :
>>
>>                 print ("i="^Int.toString(i)^"\n");
>>  		Writers.binXWriter("data/sync_"^Int.toString(i)^"_mag.bin", fft);
>> 		Writers.binYWriter("data/sync_"^Int.toString(i)^"_phase.bin", fft);
>>
>> to :
>>  		Writers.binXWriter("data/sync_"^Int.toString(i)^"_mag.bin", fft);
>> 		Writers.binYWriter("data/sync_"^Int.toString(i)^"_phase.bin", fft);
>>
>>
>> makes the program go from "works fine", to:
>>
>> uncaught exception Io [Io: openOut failed on "data/sync_52_mag.bin",
>> Invalid argument]
>>   raised at: Basis/Implementation/IO/bin-io-fn.sml:620.25-620.72
>> -
>>
>> That's right, I just remove the print statement.
>>
>> WTF ?
>>
>> That's just gotta be a bug in the compiler.
>>
>> Brian
>>
>>
>> --------------------------------------------------------------------- 
>> ----
>> This SF.Net email is sponsored by the Moblin Your Move Developer's  
>> challenge
>> Build the coolest Linux based applications with Moblin SDK & win  
>> great prizes
>> Grand prize is a trip for two to an Open Source event anywhere in  
>> the world
>> http://moblin-contest.org/redirect.php?banner_id=100&url=/
>> _______________________________________________
>> Smlnj-list mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/smlnj-list
>>


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/