- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Stripped-down code shown below is generating "access violation" run-time error when ReadAttribute subroutine is called. The error occurs when the program is compiled with IVF 17.0 but not with IVF 16.0. Maybe a bug in the compiler?
Thanks!
MODULE HDF5_CLASS
IMPLICIT NONE
TYPE :: HDF5FileType
CONTAINS
PROCEDURE,PASS :: New => New_HDF5File
PROCEDURE,PASS :: ReadAttribute
GENERIC :: ReadData => ReadAttribute
END TYPE HDF5FileType
CONTAINS
SUBROUTINE New_HDF5File(ThisFile,FileName,lInputFile,AccessType,Status)
CLASS(HDF5FileType) :: ThisFile
CHARACTER(LEN=*),INTENT(IN) :: FileName
LOGICAL,INTENT(IN) :: lInputFile
CHARACTER(LEN=*),OPTIONAL,INTENT(IN) :: AccessType
INTEGER,OPTIONAL,INTENT(OUT) :: Status
CHARACTER(LEN=11) :: cAttributesDir
LOGICAL :: TrackTime
cAttributesDir = '/Attributes'
CALL ThisFile%ReadAttribute(cAttributesDir,'TimeStep%TrackTime',ScalarAttrData=TrackTime)
END SUBROUTINE New_HDF5File
SUBROUTINE ReadAttribute(ThisFile,cGrpOrDset,cAttrName,ScalarAttrData,ArrayAttrData)
CLASS(HDF5FileType),INTENT(IN) :: ThisFile
CHARACTER(LEN=*),INTENT(IN) :: cGrpOrDset,cAttrName
CLASS(*),OPTIONAL,INTENT(OUT) :: ScalarAttrData,ArrayAttrData(:)
END SUBROUTINE ReadAttribute
END MODULE HDF5_CLASS
PROGRAM Test
USE HDF5_CLASS
IMPLICIT NONE
TYPE(HDF5FileType) :: ThisFile
CALL ThisFile%New('SomeFileName',.TRUE.)
END
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, possibly. I reproduced the fault with our latest 17.0 update 1 but cannot reproduce it with our internal 17.0 development build so there may already be a fix coming. I reported it to Development and will let you know. Thank you for the convenient reproducer.
(Internal tracking id: DPD200416622)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Development confirmed this instance is similar to an earlier reported instance (here) and that a fix is expected in our next PSXE 2017 Update 2 tentatively due to release in the next month.
As a work around in the meantime, the error is avoidable by filling all the optional dummy args for the call as shown in the revision to your test case below (see ! work around for added/changed lines).
MODULE HDF5_CLASS
IMPLICIT NONE
TYPE :: HDF5FileType
CONTAINS
PROCEDURE,PASS :: New => New_HDF5File
PROCEDURE,PASS :: ReadAttribute
GENERIC :: ReadData => ReadAttribute
END TYPE HDF5FileType
CONTAINS
SUBROUTINE New_HDF5File(ThisFile,FileName,lInputFile,AccessType,Status)
CLASS(HDF5FileType) :: ThisFile
CHARACTER(LEN=*),INTENT(IN) :: FileName
LOGICAL,INTENT(IN) :: lInputFile
CHARACTER(LEN=*),OPTIONAL,INTENT(IN) :: AccessType
INTEGER,OPTIONAL,INTENT(OUT) :: Status
CHARACTER(LEN=11) :: cAttributesDir
LOGICAL :: TrackTime
character(len=8) :: ArrAttrData(2) ! work around
cAttributesDir = '/Attributes'
ArrAttrData(:) = ['/Attrib0','/Attrib1'] ! work around
CALL ThisFile%ReadAttribute(cAttributesDir,'TimeStep%TrackTime',ScalarAttrData=TrackTime,ArrayAttrData=ArrAttrData) ! work around
END SUBROUTINE New_HDF5File
SUBROUTINE ReadAttribute(ThisFile,cGrpOrDset,cAttrName,ScalarAttrData,ArrayAttrData)
CLASS(HDF5FileType),INTENT(IN) :: ThisFile
CHARACTER(LEN=*),INTENT(IN) :: cGrpOrDset,cAttrName
CLASS(*),OPTIONAL,INTENT(OUT) :: ScalarAttrData,ArrayAttrData(:)
END SUBROUTINE ReadAttribute
END MODULE HDF5_CLASS
PROGRAM Test
USE HDF5_CLASS
IMPLICIT NONE
TYPE(HDF5FileType) :: ThisFile
integer status ! work around
status = 0 ! work around
CALL ThisFile%New('SomeFileName',.TRUE.,'Default',status) ! work around
print *,"OK"
END
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I noticed an inconsistent declaration in your code:
22 |
character(len=7) :: ArrAttrData(2) ! work around |
23 |
24 |
cAttributesDir = '/Attributes' |
25 |
ArrAttrData(:) = ['/Attrib0','/Attrib1'] ! work around |
You have "len=7" and the data strings are of "len=8". Not sure if this is causing your error though.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you. I corrected that above. That was a mistake in the work around code provided and not in the OP's code and not related to the original error.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page