Mail Archives: cygwin/2011/03/26/11:34:50
On 03/26/2011 03:33 AM, marco atzeri wrote:
> 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
> ------------------------------------------------------------------
>
I have been monitoring this thread for the libgfortran maintainer side, but have
not had time yet to investigate further. The only platform reporting the issue
so far is Cygwin. I am not aware of any changes occurring with 4.3 upstream of
Cygwin, but I will check the logs.
Jerry
--
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
- Raw text -