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)
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;
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();
}
}
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");
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;
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;
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();
}
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>
An: "Open MPI Users" <us...@open-mpi.org>
Betreff: Re: [OMPI users] segmentation fault with java MPI
Von: "Gilles Gouaillardet" <gil...@rist.or.jp>
An: "Open MPI Users" <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
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
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
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