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

    <tr>
        <th>Summary</th>
        <td>
            Spurious calls to terminate with __cxa_vec_*
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc++abi
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          hubert-reinterpretcast
      </td>
    </tr>
</table>

<pre>
    With libc++abi, if an exception throws _during_ unwind cleanup from a destructor called via `__cxa_vec_dtor`, a call to terminate with no actively handled exception occurs despite a `try`/`catch` that would prevent the exception from escaping. The GNU runtime library has no such problem.

Online compiler link: https://godbolt.org/z/aEYvxa638

### SOURCE (`<stdin>`):
```
#include <exception>
#include <cxxabi.h>
struct A {
  ~A() noexcept(false) { throw 0.f; }
};
void dtorfunc(void *p) { static_cast<A *>(p)->~A(); }
struct B {
  ~B() {
    try {
      __cxxabiv1::__cxa_vec_dtor(new A[1], 1u, sizeof(A), dtorfunc);
    } catch (...) { }
  }
};
int main(void) {
  try {
    B b;
    throw 0;
  } catch (...) { }
}
```

### COMPILER INVOCATION COMMAND:
```
clang++ -stdlib=libc++ -xc++ -
```

### RUN INVOCATION:
```
./a.out
```

### ACTUAL RUN OUTPUT:
```
libc++abi: terminating
```

### EXPECTED RUN OUTPUT:
(No output); rc=0

### COMPILER VERSION INFO (`clang++ -v`):
```
clang version 15.0.0 (https://github.com/llvm/llvm-project.git a0d40a579a6f27a1b1cdb7d68b2145e332c02c4e)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/wandbox/clang-head/bin
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9
Candidate multilib: .;@m64
Selected multilib: .;@m64
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJytVlmP4jgQ_jXhpUSUOJwPPIRr1NIMjLrp2d0n5NgGvGNs5AOY-fVbTmjoZnuOlVYKie2yq746_BWV4d9Gf0i_AyUrlpAxPrSSCZmA3ADVIM5MHLw0GvzOmpODNQ9W6u0agj5JzYEpQXU4wMaaPVDgwnkbmDcWGFVKcDhKCkkvW6_Zma6Pgq05CnEh2qD1JvAGvLB7qakXcIpotAHKvDwK9Q12VPOo6AbFMBasi7YOEk_U-r39Viud45tRz3b4RczUw8kExeFgxVFoj0vilaYatXCMHtCnFFYo_LB4Bhu0l3sRg2KpjRBchOQC26EiUymxT5NsmmRl815qJbUAZvYHqYTFc_prUpSw8_7gcBBhkfnW8Moonxq7xdl3_NHZX8cz7RWD18oSUjQPPC2fHyczSMggulZMnOdSJ8WsdnQY9TYHcNo8L-elZipwAXjm6ms8946cnc-Y8HR3FTf5gxKS_rhZARzOyoiCDDEMjUacbqhyIq7hzqY8IEs3STHGhenFFg6Ki5qjkRxi8jdBY6kN6nlCysOLCuepl2zNqPMIrIyyiIoM4o52HF5hvDFyQTy-Qzy-IH61CoBl8nYBIFZmjMExjxEtyrtKJQMtTlAm3XGedKexavMQ305-F2aD4jLiwYWba8Orz1E_4oS6ImMi0zR9cfeKH96Pl8Rq3VNMeBOqO1f-5cgYqjdmLwl5tfZLILfBXUXd1eVk-enzw8fZIzwsviwn5ephuYhrn8rF9EdFyRTV24ZfoI11jDcrKaY30oH2-Tr6LQyPz4tX5n9kNo2XLDXB_5bOcrJ6Lj_WqpfPq8_Pqx-pfUuWeNFf6AtZ5Lcszf78PJusZtN3bZHBwgBiPiDsptQtw2D9KhlfZo9PMRMPi_nywhlvon78OW3Ue-EorIvEmHfTLM2imjsOQ3YOVYpMhxOlji-fNtLi34L5FDcAzXgno93-kPY2pE_zKme86vPeoCJ5pyuKgrCMsE7kjsb2itqt8DGQ50Fv3eu0g_6qzUm3kUjDub3V4bJvZwXlsDdcqLj7YJw8N6IHjfQRG85U2ihCXCay1PyE7aMyZxzVHrZ3qAEnFV6s-uDchNjGcJfksf98mGDva5TRhjdrZcHZ6CqWLQaBYfbnF6g3iGR-cedJKAwFtqz_QdfkCmwflJf1vSkhjde6k-17nTuLP9t0l_AWHxV8WAxpy0uvxOjpgJ3dBFf3ZPdOU74RIzJzK1g1-m-1gVPpXBAOB91uVmSt3YgL1qdVTvNiMxz2s01ekYIykm8YG-Y877cUrYRyI6TfhJC7PykECbklRyQjJOvgr-j2SC8dZPmmzykdkg7nPdHFEAjkUZVGLLH5tuyohlWFrUOhks67m5A6J7daiNok6qfB74wdoWfC-rYVSMvC4r8JH_tUq3ZoVHvzD7HhqVk">