Thanks Marko, I will check that tomorrow. I did pretty much the same thing, but without testfile0, that looks pretty useless here. fwiw, in the past we saw some random crashes and the root cause was MPI did not retain some objects, and bad things happened when the garbage collector ran.
btw, are you running on an x86_64 arch ? Cheers, Gilles On Monday, January 25, 2016, Marko Blatzheim <marko-blatzh...@web.de> wrote: > Hi Gilles, > > I checked out openMPI Master 2 weeks ago. > JVM is: java version "1.7.0_25" > Java(TM) SE Runtime Environment (build 1.7.0_25-b15) > Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) > command line is: mpirun -np 2 java -jar MPI_open.jar > > The segmentation fault is in the line with: test = is.readObject(); > > > package mpi_open; > import java.io.ByteArrayInputStream; > import java.io.FileOutputStream; > import java.io.IOException; > import java.io.ObjectInputStream; > import java.io.ObjectOutputStream; > import java.io.Serializable; > import java.util.ArrayList; > import java.util.Random; > import mpi.File; > import mpi.MPI; > import mpi.MPIException; > import mpi.Status; > > public class MPI_open { > > public static void main(String[] args) throws MPIException, > IOException, ClassNotFoundException { > > MPI.Init(args); > int myRank = MPI.COMM_WORLD.getRank(); > if (myRank == 0) { > // create file > int num = 1000000; > Random r = new Random(1234); > ArrayList<Serializable> obj0 = new ArrayList<>(num); > double[] obj1 = new double[num]; > for (int j = 0; j < num; j++) { > double d = r.nextGaussian(); > obj0.add(d); > obj1[j] = d; > } > obj0.trimToSize(); > System.out.println("objects created"); > java.io.File f = new java.io.File("testfile0"); > ObjectOutputStream out = null; > try { > out = new ObjectOutputStream(new FileOutputStream(f)); > System.out.println("out1"); > out.writeObject(obj1); > System.out.println("out2"); > } catch (java.lang.ClassCastException x) { > throw x; > } finally { > if (out != null) { > out.close(); > } > } > System.out.println("file 1 done"); > java.io.File f1 = new java.io.File("testfile1"); > ObjectOutputStream out1 = null; > try { > out1 = new ObjectOutputStream(new FileOutputStream(f1)); > out1.writeObject(obj0); > } catch (java.lang.ClassCastException x) { > throw x; > } finally { > if (out1 != null) { > out1.close(); > } > } > System.out.println("file 2 done"); > String filename = "testfile1"; > byte[] readbuf; > File myfile = new File(MPI.COMM_SELF, filename, > MPI.MODE_RDONLY); > int filesize = (int) myfile.getSize(); > readbuf = new byte[filesize]; > Status status = myfile.read(readbuf, filesize, MPI.BYTE); > Object test = null; > ByteArrayInputStream in = new ByteArrayInputStream(readbuf); > ObjectInputStream is = new ObjectInputStream(in); > System.out.println("Program fine until this line!"); > test = is.readObject(); > } > MPI.Finalize(); > } > } > > Thanks > Marko > > *Gesendet:* Montag, 25. Januar 2016 um 01:04 Uhr > *Von:* "Gilles Gouaillardet" <gil...@rist.or.jp > <javascript:_e(%7B%7D,'cvml','gil...@rist.or.jp');>> > *An:* "Open MPI Users" <us...@open-mpi.org > <javascript:_e(%7B%7D,'cvml','us...@open-mpi.org');>> > *Betreff:* Re: [OMPI users] segmentation fault with java MPI > Marko, > > i wrote a test program based on your code snippet and it works for me. > > could you please : > - post a standalone test case that is ready to be compiled and ran > - which version of OpenMPI are you using ? > - which JVM are you using ? (vendor and version) > - post your full command line > > Cheers, > > Gilles > > On 1/25/2016 8:23 AM, Marko Blatzheim wrote: > > String filename = "testfile"; > > byte[] readbuf; > > > > File myfile = new File(MPI.COMM_SELF, filename, MPI.MODE_RDONLY); > > int filesize = (int) myfile.getSize(); > > readbuf = new byte[filesize]; > > > > byte[] copyarray = new byte[filesize]; > > Status status = myfile.read(readbuf, filesize, MPI.BYTE); > > Object test = null; > > if (myrank == 0) { > > ByteArrayInputStream in = new ByteArrayInputStream(readbuf); > > ObjectInputStream is = new ObjectInputStream(in); > > test = is.readObject(); // This line causes a > > segmnentation fault > > } > > _______________________________________________ > users mailing list > us...@open-mpi.org <javascript:_e(%7B%7D,'cvml','us...@open-mpi.org');> > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users > Link to this post: > http://www.open-mpi.org/community/lists/users/2016/01/28360.php >