<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/63558>63558</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [libc][riscv] Fatal error: glibc detected an invalid stdio handle
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          mikhailramalho
      </td>
    </tr>
</table>

<pre>
    I started to get the following error when testing the latest ToT libc in a VisionFive 2 board:
```
$ valgrind ./libc.test.src.stdio.ungetc_test.__build__
==51691== Memcheck, a memory error detector
==51691== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==51691== Using Valgrind-3.21.0.GIT and LibVEX; rerun with -h for copyright info
==51691== Command: ./libc.test.src.stdio.ungetc_test.__build__
==51691== 
[ RUN      ] LlvmLibcUngetcTest.UngetAndReadBack
[       OK ] LlvmLibcUngetcTest.UngetAndReadBack (took 218 ms)
Ran 1 tests.  PASS: 1 FAIL: 0
Fatal error: glibc detected an invalid stdio handle
==51691== 
==51691== Process terminating with default action of signal 6 (SIGABRT)
==51691==    at 0x4B4CC54: __pthread_kill_implementation (pthread_kill.c:44)
==51691==    by 0x4B17B89: raise (raise.c:26)
==51691==    by 0x4B08047: abort (abort.c:79)
==51691== by 0x4B4438B: __libc_message (libc_fatal.c:150)
==51691==    by 0x4B4439D: __libc_fatal (libc_fatal.c:159)
==51691==    by 0x4B446B5: _IO_vtable_check (vtables.c:67)
==51691==    by 0x4B446B5: _IO_vtable_check (vtables.c:37)
==51691==    by 0x4B3CB91: fflush (libioP.h:945)
==51691==    by 0x494E2B9: std::ostream::flush() (in /usr/lib/riscv64-linux-gnu/libstdc++.so.6.0.31)
==51691==    by 0x48F0AF3: std::ios_base::Init::~Init() (in /usr/lib/riscv64-linux-gnu/libstdc++.so.6.0.31)
==51691==    by 0x4B19265: __cxa_finalize (cxa_finalize.c:82)
==51691==    by 0x48DF975: ??? (in /usr/lib/riscv64-linux-gnu/libstdc++.so.6.0.31)
==51691==    by 0x4000E45: _dl_call_fini (dl-call_fini.c:43)
==51691== 
==51691== HEAP SUMMARY:
==51691==     in use at exit: 73,728 bytes in 1 blocks
==51691==   total heap usage: 10 allocs, 9 frees, 76,108 bytes allocated
==51691== 
==51691== LEAK SUMMARY:
==51691==    definitely lost: 0 bytes in 0 blocks
==51691==    indirectly lost: 0 bytes in 0 blocks
==51691==      possibly lost: 0 bytes in 0 blocks
==51691== still reachable: 73,728 bytes in 1 blocks
==51691==         suppressed: 0 bytes in 0 blocks
==51691== Rerun with --leak-check=full to see details of leaked memory
==51691== 
==51691== For lists of detected and suppressed errors, rerun with: -s
==51691== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Aborted (core dumped)
```

libc built with:
```
$ clang -v
Ubuntu clang version 15.0.7
Target: riscv64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/12
Selected GCC installation: /usr/bin/../lib/gcc/riscv64-linux-gnu/12
```
on:
```
$ uname -a
Linux ubuntu 6.2.0-23-generic #23.1-Ubuntu SMP Sat Jun  3 08:01:11 UTC 2023 riscv64 riscv64 riscv64 GNU/Linux
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8V09z4yoS_zT40mUVQrIsH3zwnzib9zIzKSeZ2j25kGhbbBC4ADnJHvazb4GcxDvzPC-TmhqVy4IW_Ohfd9M03Dm504hTMpqT0XLAO98YO23lQ8OlsrzlqjGDyojn6RU4z61HAd7ADj34BmFrlDKPUu8ArTUWHhvU4NH5IAoDFA89uDN3oGRVg9TA4at00uiVPCAwqAy3gmQzQpeEzkhBj7--y3I4cLWzUgtICFsFkCRAJs7WifNCmqTTO_T1Jko3m6qTSmw2x_nZkmTLUVpM0r4Jn7CtG6wfCFsAhxZbY5-Pygv0WHtjz01dmP2zlbvGA2HlgrAJMErZkFHGIpoWcPn5Hi5vrgkbiyCqnuGPTkmu4RYfuRWAHrhKzi1w74LZvh75DrOEpQlNLq_uIva1rL5e_JNkc7BoOw2P0jcwbGBrLNSvqkm9NecJtC3Xwdi_xpZH-WgO6_vPEB8yWsK1OrTXsqrvI9ZdgIrNmRZr5GLO64e3mf3z5c_3zgy298Y8AEtLaB1hkx5rzTWkMfRcAnAzu70NNFNYza6uQ-sYUCvuuer9HaS7GJS941EA1yD1gSspIJoDGq6Fwr_h_538xpoanQOPtpWax80QvSVwyzvlgddeGg1mC2H7cQVFoHV7dTmbr-9eKX0PDADcA33K5_liMcoDg81m7xuLXGwepFIb2e4Vtqg9jysQVp5-TmqSzfL8xytUz3GFdDwvJ2EFy6XDgBQbEYIV74KgJc3HAYJXxsZdExsRYjz5AcRxfp5n5bwnGfy0adE5vou6xP42ODOipSP6Lo3yPJssTxAjwl_i_Ui9U7xiPop4V182B88rhZuYXgJm33cRsBj_WrzsfXjZYh6kM9huVeeaI1NpbpKGZLNJPnoPyiS_YPMYCs7HTJ3NjPMWedt3IjRhZciIhJUyhN2qc7ZPMYStrHT1ociHSuruabjTXf_FeVETNidsnjiTFAlNsvQ9-pQrOltl_6ePNG5TcYd970pL37f-G5u_T7V5OmFF78BN_cQ3W6m5kv-JIXvajz4s2bvYLleTcYQk2ar__RYqlNKLvKci1KbmSgXtZVhbqOFrv08p2Q8Qz8n_cTG7gdv7T59m63-9nf9_pVCoGjqHIffhU3QtjDPCFmNWQvXs0YUBKVTK1A_uPI43YbM3yPfQhTwSDwgKXClTu3BcT2BrEWNzXBC2SOkLfhzDPYqfJXl9MfvzfSQFBnN6VM-gjIsk6Rs7-rfsQGohLdb-wwAAe-OcrD4G4LxUCizyuglp6qNO6h_X7fcWnUPxk1qsT0qjoUL-MOyrvWy57ZQKpatDDAc-l8qFAziMQXEsBH_WuytjQUnnI9JJFSFOCPTFRgyqt7otsBqeJXGxXn9Zn0QN0CMIbK1pgUJttMcn78Jm_NZU_ZDX_TgLJy6KmICMRRBdu0fxtl2_qbfjfyyKQu3nX5Q9W5zXiusdDA-95L7qtO-OwgPaUOZDOkpoMu4H3HG7wxhZL9mq0w_aPOqTrNUPjEULtEagCsP3xsmn_tOVdp4rhWIpYw33mgYrqY9Fnum0gJprIQX3CJeLBch-ViyLvpvFVknymkd3dX0mm6asx79F1Xv6VwN_Y-AIeNb0neYtwpD3kusAB13vgCJhCR2ybLhDjVbWQFjGsiQdHh10--kGbrmHPzoNkAEtSTajoU5IU7i_WwCjLHvx0Hfvy8_3hK3iet_oNhDTTEyyCR_gNC3KcVmWeVYOmimvJgUv03JLU1pU1Xib1YzmdJuW1bag9WQgp2FJWrBxOh5lozJJJ6MqE0WZ8mJbIuUkp9hyqRKlDm1i7G4gnetwWmSjUTlQvELl4iWWMY2PED8SxsKd1k7DnGHV7RzJadyubyheehVvvyHmyWhJRvPIM9xGPnRXGHRWTRvv9y74jq2C36VvuiqpTRtCQR1eXsO9Nf_G2hO2ivo6wlaRz_8CAAD__1fUdVw">