Hi Thomas, > the attached patch is the third take on Nicolas' and my patch > for implementing asynchronous I/O. Some parts have been reworked, and > several bugs which caused either incorrect I/O or hangs have been > fixed in the process. > > I have to say that getting out these bugs has been much harder > than Nicolas and I originally thought, and that this has cost more > working hours than any other patch I have been involved in. > > This has been regression-tested on x86_64-pc-linux-gnu. The new test > cases have also been tested in a tight loop with > > n=1; while ./a.out; do echo -n $n " " ; n=$((n+1)); done > > or (for async_io_3.f90, which is supposed to fail) > > while true ; do ./a.out > /dev/null 2>&1 ; echo -n $n " " ; n=$((n+1)); > done > > and the test cases also come up clean with valgrind --tool=drd > (which is a _very_ strict tool which, after this experience, I > wholeheartedly recommend for doing pthreads debugging). > > The interface remains as before - link in pthread to get asynchronous > I/O, which matches what ifort does.
another test run on i386-pc-solaris2.11 is underway. However, may (all?) gfortran tests now SEGV. One example is Program received signal SIGSEGV: Segmentation fault - invalid memory reference. Backtrace for this error: Segmentation Fault Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0xfe1b1f03 in pthread_mutex_unlock () from /lib/libc.so.1 (gdb) where #0 0xfe1b1f03 in pthread_mutex_unlock () from /lib/libc.so.1 #1 0xfe5d1b7c in __gthread_mutex_unlock (__mutex=0x18) at ../libgcc/gthr-default.h:778 #2 _gfortran_st_rewind (fpp=0xfeffda9c) at /vol/gcc/src/hg/trunk/solaris/libgfortran/io/file_pos.c:486 #3 0x0805110f in MAIN__ () at /vol/gcc/src/hg/trunk/solaris/gcc/testsuite/gfortran.dg/backslash_2.f90:6 Obviously __mutex above hasn't been properly initialized. > 2018-07-02 Nicolas Koenig <koeni...@gcc.gnu.org> > Thomas Koenig <tkoe...@gcc.gnu.org> > > PR fortran/25829 > * testsuite/libgfomp.fortran/async_io_1.f90: New test. > * testsuite/libgfomp.fortran/async_io_2.f90: New test. > * testsuite/libgfomp.fortran/async_io_3.f90: New test. You seem to have a special fondness for libgfomp ;-) Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University