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

    <tr>
        <th>Summary</th>
        <td>
            [Clang] Call a NONRETURN_PTR between `va_start` and `va_end` leads to the clangd server crashed.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

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

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

<pre>
    The `usage.c` in the `git` project will result in this.

This is a minimal reproduce:

``` c
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>

#define NORETURN __attribute__((__noreturn__))
#define NORETURN_PTR __attribute__((__noreturn__))
typedef void (*report_fn)(const char *, va_list params);

static void NORETURN die_builtin(const char *err, va_list params)
{
        exit(128);
}

static NORETURN_PTR report_fn die_routine = die_builtin;

void NORETURN die(const char *err, ...)
{
        va_list params;

        va_start(params, err);
        die_routine(err, params);
        va_end(params);
}
```

The code itself is valid. But the clangd crash:

``` text
I[22:05:07.654] clangd version 19.1.2 (https://github.com/llvm/llvm-project 7ba7d8e2f7b6445b60679da826210cdde29eaf8b)
I[22:05:07.654] Features: linux+grpc
I[22:05:07.654] PID: 734406
I[22:05:07.654] Working directory: /home/npc1054657282/my_projects/clangd-crash-minimal
I[22:05:07.654] argv[0]: /home/npc1054657282/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/19.1.2/clangd_19.1.2/bin/clangd
I[22:05:07.654] argv[1]: --compile-commands-dir=.vscode
E[22:05:07.654] Path specified by --compile-commands-dir does not exist. The argument will be ignored.
I[22:05:07.654] Starting LSP over stdin/stdout
I[22:05:07.655] <-- initialize(0)
I[22:05:07.657] --> reply:initialize(0) 1 ms
I[22:05:07.683] <-- initialized
I[22:05:07.686] <-- textDocument/didOpen
I[22:05:07.688] Failed to find compilation database for /home/npc1054657282/my_projects/clangd-crash-minimal/usage.c
I[22:05:07.688] ASTWorker building file /home/npc1054657282/my_projects/clangd-crash-minimal/usage.c version 464 with command clangd fallback
[/home/npc1054657282/my_projects/clangd-crash-minimal]
/usr/bin/clang -resource-dir=/home/npc1054657282/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/19.1.2/clangd_19.1.2/lib/clang/19 -- /home/npc1054657282/my_projects/clangd-crash-minimal/usage.c
I[22:05:07.691] --> textDocument/clangd.fileStatus
I[22:05:07.728] Built preamble of size 398024 for file /home/npc1054657282/my_projects/clangd-crash-minimal/usage.c version 464 in 0.04 seconds
I[22:05:07.730] Indexing c17 standard library in the context of /home/npc1054657282/my_projects/clangd-crash-minimal/usage.c
I[22:05:07.730] --> textDocument/clangd.fileStatus
I[22:05:07.730] --> textDocument/clangd.fileStatus
I[22:05:07.730] --> workspace/semanticTokens/refresh(0)
I[22:05:07.740] <-- reply(0)
I[22:05:07.752] --> textDocument/publishDiagnostics
I[22:05:07.752] --> textDocument/inactiveRegions
I[22:05:07.752] --> textDocument/clangd.fileStatus
I[22:05:07.859] <-- textDocument/documentSymbol(1)
I[22:05:07.859] <-- textDocument/documentLink(2)
I[22:05:07.859] <-- textDocument/inlayHint(3)
I[22:05:07.859] <-- textDocument/semanticTokens/full(4)
I[22:05:07.859] <-- textDocument/codeAction(5)
I[22:05:07.860] --> reply:textDocument/documentSymbol(1) 1 ms
I[22:05:07.860] --> reply:textDocument/documentLink(2) 1 ms
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  clangd          0x000000000055715b
1  clangd 0x0000000000554fbe
2  clangd          0x0000000000557af6
3  libpthread.so.0 0x00007f15ee7ed1d0
4  clangd          0x00000000016e51ba
5  clangd 0x00000000016e2d2c
6  clangd          0x00000000016dcf39
7  clangd 0x00000000016d1bef
8  clangd          0x00000000016e80aa
9  clangd 0x00000000016cd610
10 clangd          0x00000000016cf545
11 clangd 0x00000000016cad1e
12 clangd          0x00000000015f573f
13 clangd 0x000000000179856c
14 clangd          0x000000000178fa0b
15 clangd 0x000000000178e460
16 clangd          0x000000000190f7c1
17 libpthread.so.0 0x00007f15ee7e23fb
18 libc.so.6       0x00007f15ee4e2e83 clone + 67
Signalled during AST worker action: InlayHints
  Filename: usage.c
 Directory: /home/npc1054657282/my_projects/clangd-crash-minimal
  Command Line: /usr/bin/clang -resource-dir=/home/npc1054657282/.vscode-server/data/User/globalStorage/llvm-vs-code-extensions.vscode-clangd/install/19.1.2/clangd_19.1.2/lib/clang/19 -- /home/npc1054657282/my_projects/clangd-crash-minimal/usage.c
  Version: 464
[Error - 10:05:08 PM] The Clang Language Server server crashed 5 times in the last 3 minutes. The server will not be restarted. See the output for more information.
[Error - 10:05:08 PM] Request textDocument/inlayHint failed.
[object Object]
[Error - 10:05:08 PM] Request textDocument/semanticTokens/full failed.
[object Object]
[Error - 10:05:08 PM] Request textDocument/codeAction failed.
[object Object]
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWFtv6zgO_jXqCxFDlq95yEN6CeYAnXOKpjOL3ZdAtuhEW0fKSnJOO79-QTtJT6dJeq7APmxRNI1NfSIp8iMp6b1eGsQJyy5Zdn0hu7CybmI2dcyzNM8KUYqLyqrnycMKgeW883KJUc1yDtpAGB4udaAHG2f_jXWAz7ptwaHv2jAIaR8xPmV8-rDSHrQHCWtt9FqS2MZZ1dXIkukgw3I-_EJN30SiTd12CoElVz6oVlfRiiU3x95pe_KVdMvDu_61wkYbhI-f7m8e_rj_CIuFDMHpqgu4WDBRMlEuFsY6DJ0z9GRMv8eWLu4e7r96eXjeoMIGtlYr6OWmDjfWhUVjeqGytsYHqFfSARNTJq5gKxet9gE20sm1J6nkcrDDBxl0PYAdLFEaF1Wn26DNGzh07jgin7JiAB3jkw5MlDEpt9-quH614SvTD_r3OzvbBfIOS65fabJX-Y2up3SMouhviv1N6z3i8MYH6UjtvUlX0OMcfDX-Qjkmyt0mb1xKUGjUF0CvXbAPzn08I9RWIejgsW0otLey1SqCyy702VG30iwV1E761ZEQD_gUGJ9-YNmlECyZ8oz-FFGepSy73q_eovPaGojHURwJCptVCBtPeGLGxGypw6qrotqumZi17Xb_MdpnZFHJQpUomqLK0zSrcp4XYyVLkYuY10qhGKNsympw-CltZihD55D2hVab7omJy6Xb1GeW3H24JukiSVOen5H7h3WP2ixBaYd1sO6ZVjExW9k1MjF7xUdMzNbPi51pnonZ4KVR7-PRjljO7CXdcsuyS86y6_O7RFtPhzvy6LbomJgpGSQTsz98_23Z2kq282CdXOLe41s_6tfgU0BDh-b3KIOWTMy08UG2LROz4TwPFiwO3ytK3d3T9y2Jd5aMRrVdb3SL9LmWRvmR0o4l1zsVGJ_enDonGVbgN1jrRqOC6vkEGCiLHowNgE_ahwgoA6Rbdms0O-KvEPSSmE9FZ1SfU7rSid_O78Bu0QHxN1ntg7LdiaTIaClLrkYj0EYHLVv9F2UzPxm4Ba0YjVhyQzzVUly9WQkxrP3R5WVybMPjR1LmL7KU1te27r1CcaPVpw2a48vKPrWkblFBsNBoo2BwvQyU9BR0lfQIjXU_lhJitq_epxWZzh8oF9EBEbeiE2p0iz9p4wOTpXkKn3VYwS649kzXyLatZP1IJJld_tCmWc_XtLV7nVEwcuht52rcpcf_IgO0uto_7cVgNPqVhz-OX_Lkb8E7oEUUBfMgQ3c0UwrRR88lFXvYOJTrqkWwDXj9F0IyLrlI-wD-VcGkDfCIp-CxtkYd1zEhyocPRuETxXUdF-CDNEo6Ba2unHTP-6a2tobcQBb8Oq_vFPoBr_9UgM_WPfqNrMlUj2tpgq4f7CMass5h49CvznBtkfIXAhy49oxwJk5qvumqVvvVtZZLY33Q9XHVzyBoI-ugt3iPS8q_b13-Va4rs_Fpvt_9O39eV7alXvqEG74G5FabR9YH3DdDaNPK5980_V8m37H-TRQ0HbFWmX4HFjHgtKaKxkSZnQLI-dt6_TXOPVnCvwXxC0_v8e5ub6bzG_BdtdYBJFTdcjfvUK3-ti6cDsT7DsmRQDVvP6H2hEO0AVT6gpM1Uus0D7J-BNWtN32ptF0A39sMRq7R0xiAxncO4dl2sJJbhH67QUj_hY7Y7Nl2Du6mD7-BdeBxmErQbLWzpm_atjR15fz29s_fF_N__n756fbDv27uF7Skn1AsbKw2vb00F46HKYbDvmQffvgTP_xkWRFnFePT-CD3-nXaVNSPindhZENzQwLE0JuwcihV5G3Ed3JFE2eIBapY0UyWnsWLc8ziSjI-zY6pFecolCCqzt-BUXWTUAAXx2FUXGHD-LR8T5uSS9JmfBymVnlMRsX8PEzdZGlGcvFxGKli8nUszsJkTVYkpHWcHIMpxmWWk2_i9CxMUTaS9yefHYUpMe2n5zg_CzPmTVHHJFe8c_IiafrtSpKrSSJ_hTfIpSiwJMOsof7jEvKCUkwvjWyp81ado55gOn_o6yA6kANZJVP4sKdRYgSAmW6RMpBevVR3uP6JoyvA1a4vvtUGd4D_b2TftFQAfw49ILkozdNhbLhxzjoYQcwPhaCEu9-pDtC4etX77laaZSeXCPPeJTB4ZuBhVJBB0ESyu36wlT5AAmttuoB-GHt3K_qhlybiCsFhfw2FKoI5DsRuu7DpQt_7rq1D0Kaxbt2PdtG76t7jfzr04WRdh6afG3dAtuovez71H7v553vgj5b9X7PVS1fwPv7-0uxCTRI1TsbyAidxkZbjbJyP84vVpC44ZjWmVZknqUp5ViVFXsdxirHIyhIv9ERwkfGcJ3HKyziLpBiniRJ1FnOu8rphKce11G1ECRBZt7zoK_YkTkXOy4tWVtj6_q5ciF1IUxt54SZ9xlTd0rOUt9oH_wIRdGj7C_Y-8MgZV7JtQcLHTx-_uEatMHxGNFSLD9eZOe8bheERGkUPWpTKUzX-4nrxdfBGF51rJ9_fnOys3U7EfwMAAP__3s02Yw">