<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/150306>150306</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[flang] The presence of `iostat=` specifier doesn't stop Flang runtime from crashing.
</td>
</tr>
<tr>
<th>Labels</th>
<td>
flang:runtime
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DanielCChen
</td>
</tr>
</table>
<pre>
Consider the following code:
```
module m
type base
contains
procedure :: writeBaseFmt
generic :: write (formatted) => writeBaseFmt
end type
contains
subroutine writeBaseFmt (dtv, unit, iotype, v_list, iostat, iomsg)
class(base), intent(in) :: dtv
integer, intent(in) :: unit
character(*), intent(in) :: iotype
integer, intent(in) :: v_list(:)
integer, intent(out) :: iostat
character(*), intent(inout) :: iomsg
character(:), allocatable :: decMode
allocate (character(20) :: decMode)
inquire(unit, decimal=decMode, iostat=iostat, iomsg=iomsg) !! Should not crash with the same runtime error.
print*, iostat
print*, iomsg
if (iostat == 0) error stop 1
end subroutine
end module
program dcmlChildWrite003
use m
character(3) :: string1
type(base) :: b1
string1 = 'abc'
write (string1, '(dc, DT)') b1
end
```
Flang failed at runtime with
```
> a.out
256
INQUIRE of unit created for defined derived type I/O of an internal unit
fatal Fortran runtime error(t.f:40): INQUIRE of unit created for defined derived type I/O of an internal unit
IOT/Abort trap(coredump)
```
While the `iostat=` specifier caught the runtime error that the test case intended to test, the runtime still crashes with the exact same error.
The expected behavior should be `error stop 1`.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVU2vozYU_TXO5moix7wQssiCSSbSW7Sjtq-aZWXsC7gyNrVNXuffV7ZJQtKZSiMVIQHmfp57js29V51BPJDtR7I9rfgUeusOJ24U6uOxR7NqrPx6OFrjlUQHoUdordb2XZkOhJVIiprQmpR0vmk9WDlphIHQGgAgfB0RGu5x_o6XsCZwZXz0pDWMzgqUk0OI0Yoa3p0K-JF7PA9h4dahQafEgxUQVrXWDTwElITtgRQnUnz6Vgg0MlUzZ_13HQDgp8bZKSiDDxFiFhkuhB1hMirEp7IpFjvC5Q-t_LzmA5_fBt8Rtl82rbn3hFUJC7ZPViagCYRVyuTSU18x0d0t2nTovm-eClqk6bnjIkSPirD6PzPNPfxAsmuvVfx-aO9brnYKD9kSOj9Q6rN_xDSP6sG1uLpyra3ggTf6RiWJ4qdI09uE4zXbJfIsIzG6HMPs-dTlX5NySFh15YFEoQauSXG6OdyIUJyeGRFXMjOAsA1hG_itt5OWYGwA4bjv4V2FPgnN8wHBTSaoAQGds26d2xidigDVi0zPixmpW9Vt7DSbZoGcILWaw4IPdoTNHaOolLsSCK3jQtb1tQLbOT6AFIM-9krLL1EslBaE1pO_i38JbrHA1genTBczZkXeVHE1aBbVzMaxcCBsxxtB2O7--7YNXIOyYzSLihXx_fSW2LGL0a9h0cinXYvQ-qy56aDlSqMEHm7Qx4E8WxefgK8jPWkNbFvGx-vPv_z--usnsG2SJAiHPKCE1jqQ2CqDEiQ6dcG8DcErYefP0ZybRHpnuL6qOd8tD1zD2brguHmkAmFVWLekqF_iICNk_2v-189vhJ3rxroAwfExCsU6lNMwZkE8YfelVxoTa0lJb-wnJQU_olCtQgeCT10fktFDKxB6npcD-gCCe8ybgIyV2rQaB7l09EFpnQWD_i4Z_JuLkIWzFMxb-jWiiHg02POLiqzPymtSzQ9CKOl6JQ-F3Bd7vsLDZrctCrop9uWqPzDWVFuGGym3hZSN2DebitHqZV9We9HuypU6MMq2dMcKRul-W65bttlVJW1K2WDTyIK8UBy40mutL8Paum6lvJ_wsNnSgpYrzRvUPh3JjLWRk6So574JY_Gcdofo-qGZOk9eaNyR_T1YUEGnEz37bk8Q2x8dejQC47y_PyJp0RvCdiEjkRVxxbx1dsiQK9OtV5PThz6E0af990zYuVOhn5q1sANh51jP_PgwOvsnikDYOXXqCTvPzV4O7J8AAAD__xb3m_I">