Skip to content

dead-lock in SLARTG called by CTGSJA #411

@winice-test

Description

@winice-test

Hi

When I worked on the GGSVD3 code with some simple case, I found a dead lock in SLARTG which is called by CTGSJA.

The dead-lock occurs between line 161 and 167 when the input argument F equals to INF. But I think the real problem is in CTGSJA line 615-634. There is a check for A1 .NE. ZERO. But when we get GAMMA = B1/A1, we may get an overflow and then calls SLARTG with F=INF at line 623.

Here is a simplified case

      PROGRAM tcggsvd3
      IMPLICIT NONE
      COMPLEX*8 A(6,6), B(6,6)
      COMPLEX*8 U(6,6), V(6,6), Q(6,6)
      COMPLEX*8 WORK(1024)
      REAL*4 ALPHA(6), BETA(6)
      REAL*4 RWORK(12)
      INTEGER K,L,IWORK(6), INFO

      A=CMPLX(1.E0, 0.E0)
      B=CMPLX(0.E0, 0.E0)
      B(1,1) = CMPLX(9.E19, 0.E0)
      B(2,2) = CMPLX(9.E18, 0.E0)
      B(3,3) = CMPLX(9.E17, 0.E0)
      B(4,4) = CMPLX(9.E16, 0.E0)
      B(5,5) = CMPLX(9.E15, 0.E0)
      B(6,6) = CMPLX(9.E14, 0.E0)

      CALL CGGSVD3('N','N','N', 6,6,6, K,L, A,6,B,6,
     &             ALPHA,BETA,U,1,V,1,Q,1,WORK,1024,RWORK,IWORK,INFO)
      WRITE(6,*)'INFO = ',INFO
      WRITE(6,*)'ALPHA: ',ALPHA(1:6)
      WRITE(6,*)'BETA:  ',BETA(1:6)

      END PROGRAM tcggsvd3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions