On Sat, Mar 26, 2011 at 10:45 AM, Corinna Vinschen wrote: > On Mar 26 06:56, marco atzeri wrote: >> Hi, >> I rebuilt lapack, qrupdate, octave and netcdf with the libgfortran3-4.3.4-4. >> >> ( If you wan to try them, install with >> setup.exe -X -O -s http://matzeri.altervista.org ) >> >> lapack tests passed >> netcdf also (i am not 100% sure) >> >> but testing qrupdate I catched another problem. >> The test programs go in a never ending loop: >> >> 37 15579 [main] tch1dn_sym 4300 fhandler_tty_slave::write: (746): >> tty output_mutex: waiting -1 ms >> 31 15610 [main] tch1dn_sym 4300 fhandler_tty_slave::write: (746): >> tty output_mutex: acquired >> 33 15643 [main] tch1dn_sym 4300 fhandler_tty_slave::write: (789): >> tty output_mutex released > > That's not an endless loop as far as Cygwin is concerned. When a > process writes to the console, then every write is atomic. To accomplish > that, a mutex is used, like this: > > write() > { > acquire mutex > while (there's still something to write) > write it > release mutex > } > > So, what you see is a supposedly endless stream of calls to the write > function. Usually, if an error occurs, you would also see an error > message. The only reason you don't see it is if an error already > occured in an earlier call to write. The important would be prior to > the endless loop then. Maybe the testcase doesn't check for errors? > > > Corinna
the test case is a normal Fortran program that call numerical functions and print output with a really standard "write" command, nothing fancy. It used to work fine with previous libgfortran3-4.3.4-3 and cygwin-1.7.7 --------------------------------------------------------- write (*,*) write (*,*) 'testing Cholesky rank-1 downdate routines.' write (*,*) 'All residual errors are expected to be small.' write (*,*) n = 50 write (*,*) 'sch1dn test:' call stest(n) write (*,*) 'dch1dn test:' call dtest(n) write (*,*) 'cch1dn test:' call ctest(n) write (*,*) 'zch1dn test:' call ztest(n) ------------------------------------------------------------- subroutine smdump(name,m,n,A,lda) character(*) name integer m,n,lda real A(lda,n) integer i,j write (*,1001) name do i = 1,m do j = 1,n write(*,1002) A(i,j) end do write(*,*) end do ------------------------------------------------------------------ The full source is here, and it is a very tiny lib http://matzeri.altervista.org/cygwin-1.7/qrupdate/ May be a mutex problem in Fortran lib ? We already had long time ago.... a "WRITE" problem http://cygwin.com/ml/cygwin/2009-03/msg00428.html Marco -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple