llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.1k stars 11.6k forks source link

Crash with a macro formatting inside of double namespaces with NamespaceIndentation and CompactNamespaces #109139

Closed TIMONz1535 closed 5 days ago

TIMONz1535 commented 5 days ago

I am using the latest Visual Studio Community 2022 - 17.11.4 clang binaries 17.0.3.0 for file formatting on Windows 11 23H2 22631.4169 Command line: "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/x64/bin/clang-format.exe" --style=file clang_crash.hlsli

PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/x64/bin/clang-format.exe" --style=file clang_crash.hlsli
Exception Code: 0xC0000005
0x00007FF64B4B702C, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0xF702C byte(s)
0x00007FF64B4B51C6, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0xF51C6 byte(s)
0x00007FF64B4B4AB5, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0xF4AB5 byte(s)
0x00007FF64B41BD10, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x5BD10 byte(s)
0x00007FF64B4854D1, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0xC54D1 byte(s)
0x00007FF64B42EED7, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x6EED7 byte(s)
0x00007FF64B411462, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x51462 byte(s)
0x00007FF64B413E89, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x53E89 byte(s)
0x00007FF64B3C572D, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x572D byte(s)
0x00007FF64B3C39B6, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x39B6 byte(s)
0x00007FF64B570F40, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x1B0F40 byte(s)
0x00007FF8F0A1257D, C:\Windows\System32\KERNEL32.DLL(0x00007FF8F0A00000) + 0x1257D byte(s), BaseThreadInitThunk() + 0x1D byte(s)
0x00007FF8F21AAF28, C:\Windows\SYSTEM32\ntdll.dll(0x00007FF8F2150000) + 0x5AF28 byte(s), RtlUserThreadStart() + 0x28 byte(s)

I have a macro inside two namespaces, and the most important thing - before the macro is a comment without indentation. If you delete one namespace, or delete a comment, or add a tab in front of comment, there will be no crash

namespace TextureSet {
    namespace Tools {

// TODO: template <typename T> in HLSL 2021
#define NormalizeTest_TEMPLATE(T)                                  \
    T NormalizeTest(const in T value)                              \
    {                                                            \
        return value - (1.0f / 128.0f) * value * (1.0f - value); \
    }

}}

.clang-format

---
BasedOnStyle: Chromium

NamespaceIndentation: All
CompactNamespaces: 'true'

...

file_and_config.zip

llvmbot commented 5 days ago

@llvm/issue-subscribers-clang-format

Author: TIMON_Z1535 (TIMONz1535)

I am using the latest **Visual Studio Community 2022 - 17.11.4** clang binaries **17.0.3.0** for file formatting on Windows 11 23H2 22631.4169 Command line: `"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/x64/bin/clang-format.exe" --style=file clang_crash.hlsli` ``` PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace. Stack dump: 0. Program arguments: "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/Llvm/x64/bin/clang-format.exe" --style=file clang_crash.hlsli Exception Code: 0xC0000005 0x00007FF64B4B702C, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0xF702C byte(s) 0x00007FF64B4B51C6, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0xF51C6 byte(s) 0x00007FF64B4B4AB5, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0xF4AB5 byte(s) 0x00007FF64B41BD10, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x5BD10 byte(s) 0x00007FF64B4854D1, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0xC54D1 byte(s) 0x00007FF64B42EED7, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x6EED7 byte(s) 0x00007FF64B411462, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x51462 byte(s) 0x00007FF64B413E89, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x53E89 byte(s) 0x00007FF64B3C572D, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x572D byte(s) 0x00007FF64B3C39B6, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x39B6 byte(s) 0x00007FF64B570F40, C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin\clang-format.exe(0x00007FF64B3C0000) + 0x1B0F40 byte(s) 0x00007FF8F0A1257D, C:\Windows\System32\KERNEL32.DLL(0x00007FF8F0A00000) + 0x1257D byte(s), BaseThreadInitThunk() + 0x1D byte(s) 0x00007FF8F21AAF28, C:\Windows\SYSTEM32\ntdll.dll(0x00007FF8F2150000) + 0x5AF28 byte(s), RtlUserThreadStart() + 0x28 byte(s) ``` I have a macro inside two namespaces, and the most important thing - before the macro is a comment without indentation. If you delete one namespace, or delete a comment, or add a tab in front of comment, there will be no crash ```hlsl namespace TextureSet { namespace Tools { // TODO: template <typename T> in HLSL 2021 #define NormalizeTest_TEMPLATE(T) \ T NormalizeTest(const in T value) \ { \ return value - (1.0f / 128.0f) * value * (1.0f - value); \ } }} ``` .clang-format ``` --- BasedOnStyle: Chromium NamespaceIndentation: All CompactNamespaces: 'true' ... ``` [file_and_config.zip](https://github.com/user-attachments/files/17044745/file_and_config.zip)
EugeneZelenko commented 5 days ago

Could you please try 19 or main branch?

owenca commented 5 days ago

It works in 19 and main.