This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: libgfortran3 respin : status and problem

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 )
>> 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
      end do

The full source is here, and it is a very tiny lib

May be a mutex problem in Fortran lib ?
We already had long time ago.... a "WRITE" problem


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]