wrong keyval mode after opening non-keyval file
reported by Bert Wesarg:
Ich habe meine tests auch schon vorbereitet, damit ich ein nicht-keyval file oeffnen kann. Dazu muss man beim schreiben eine '0' als Anzahl der keys mit geben:
2 ranks schreiben in ein file ohne key API
$ mpirun -np 2 ./test-sion-key-writer-mpi test-key-mpi.2.0.1.dat 0 1 sion_generic_paropen( aid=0, fname="test-key-mpi.2.0.1.dat", mode="bw", chunksize=4194304, fsblksize=-1, global, grank=0, gsize=2, filenumber=0, numfiles=1, lrank=0, lsize=2, fp=NULL, newfname=NULL ) sion_generic_paropen( aid=0, fname="test-key-mpi.2.0.1.dat", mode="bw", chunksize=4194304, fsblksize=-1, global, grank=1, gsize=2, filenumber=0, numfiles=1, lrank=1, lsize=2, fp=NULL, newfname=NULL ) sion_generic_paropen( ..., grank=1, gsize=2, ... ) = ( sid=1 ) sion_generic_paropen( ..., grank=0, gsize=2, ... ) = ( sid=1 ) 1: writing chunk 0 sion_fwrite( 0xa2e320, size=4194304, 1, sid=1 ) 0: writing chunk 0 sion_fwrite( 0xc40360, size=4194304, 1, sid=1 ) sion_fwrite( 0xa2e320, size=4194304, 1, sid=1 ) = 1 1: writing chunk 1 sion_fwrite( 0xa2e320, size=4194304, 1, sid=1 ) sion_fwrite( 0xc40360, size=4194304, 1, sid=1 ) = 1 0: writing chunk 1 sion_fwrite( 0xc40360, size=4194304, 1, sid=1 ) sion_fwrite( 0xa2e320, size=4194304, 1, sid=1 ) = 1 sion_fwrite( 0xc40360, size=4194304, 1, sid=1 ) = 1
Wenn ich das jetzt mit "keyval=unknown" offne, bekomme ich trotzdem als keyval_mode SION_KEYVAL_INLINE:
Lese alle 2 ranks aus dem file, und erwarte keine keys
$ ./test-sion-key-reader test-key-mpi.2.0.1.dat 2 2 0 1 0: sion_get_endianness() = 0 0: sion_generic_paropen_mapped( aid=0, fname="test-key-mpi.2.0.1.dat", mode="br,keyval=unknown", numfiles=&, global, grank=0, gsize=1, nlocaltasks=2, globalranks=[], chunksizes=&[], mapping_filenrs=&[], mapping_lranks=&[], fsblksize=&, fp=NULL ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ..., globalranks[0]=0, ... ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ..., globalranks[1]=1, ... ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ... ) = ( sid=1, numfiles=1, fsblksize=-1 ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ... ) = ( chunksizes[0]=4194304, mapping_filenrs[0]=0, mapping_lranks[0]=0 ) 0: sion_generic_paropen_mapped( ..., grank=0, gsize=1, ... ) = ( chunksizes[1]=4194304, mapping_filenrs[1]=0, mapping_lranks[1]=1 ) 0: sion_get_keyval_mode( sid=1 ) = 51 Speicherzugriffsfehler (Speicherabzug geschrieben)
Der Speicherzugriffsfehler kommt dann von mir, weil ich keine Argument angegeben habe, wieviel keys im file sind. Aber da mir sion_get_keyval_mode 51 (=SION_KEYVAL_INLINE) leifert, erwartet das Programm aber noch die Anzalh der keys als Kommandozeilenargument.