<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54280>54280</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Bug: clang-format-13 and clang-format-15 segfault
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
krigney-exyn
</td>
</tr>
</table>
<pre>
Hello,
The included snippet and .clang-format file will segfault clang-format-13 and clang-format-15. This was tested with Ubuntu 20.04 with clang-format installed via the automatic installation script provided by https://apt.llvm.org/.
<details>
<summary> Crash stack trace </summary>
```
kevin@dev:~# clang-format-13 test.cpp
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: clang-format-13 test.cpp
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):
/lib/x86_64-linux-gnu/libLLVM-13.so.1(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamEi+0x31)[0x7fe15befd791]
/lib/x86_64-linux-gnu/libLLVM-13.so.1(_ZN4llvm3sys17RunSignalHandlersEv+0x50)[0x7fe15befb940]
/lib/x86_64-linux-gnu/libLLVM-13.so.1(+0xd95c92)[0x7fe15befdc92]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x143c0)[0x7fe1647c43c0]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(+0x2aba673)[0x7fe163b57673]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(_ZN5clang6format17WhitespaceManager35alignArrayInitializersLeftJustifiedEONS1_16CellDescriptionsE+0xe4)[0x7fe163b57124]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(_ZN5clang6format17WhitespaceManager22alignArrayInitializersEjj+0x67)[0x7fe163b55bf7]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(_ZN5clang6format17WhitespaceManager20generateReplacementsEv+0x186)[0x7fe163b52f16]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(+0x2a75625)[0x7fe163b12625]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(_ZN5clang6format13TokenAnalyzer7processEv+0x364)[0x7fe163b329a4]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(+0x2a801f0)[0x7fe163b1d1f0]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(_ZN5clang6format8internal8reformatERKNS0_11FormatStyleEN4llvm9StringRefENS5_8ArrayRefINS_7tooling5RangeEEEjjjS6_PNS0_23FormattingAttemptStatusE+0x89d)[0x7fe163b0bc5d]
/lib/x86_64-linux-gnu/libclang-cpp.so.13(_ZN5clang6format8reformatERKNS0_11FormatStyleEN4llvm9StringRefENS4_8ArrayRefINS_7tooling5RangeEEES5_PNS0_23FormattingAttemptStatusE+0x51)[0x7fe163b0c401]
clang-format-13[0x408c81]
clang-format-13[0x407d44]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7fe15ac4c0b3]
clang-format-13[0x406f7e]
Segmentation fault (core dumped)
```
</details>
<details>
<summary> Input test.cpp </summary>
```
ASSERT_TRUE(SetHasAddresses(routers.at("e").GetRequesterIdentities(), {
Address{},
Address{"c"},
Address{"d"},
Address{"c", "b", "a"},
}));
```
</details>
<details>
<summary> Input .clang-format </summary>
```
Language: Cpp
Standard: c++17
BasedOnStyle: Google
AlignAfterOpenBracket: AlwaysBreak #Default: Align
AlignArrayOfStructures: Left #Arbitrary: Right
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: None
AlignConsecutiveMacros: None
AlignEscapedNewlines: Left
AlignOperands: Align
BreakBeforeBinaryOperators: All
BreakBeforeTernaryOperators: true
AlignTrailingComments: false
AllowAllConstructorInitializersOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Inline
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: No
BreakBeforeBraces: Custom
BraceWrapping:
AfterClass: 'false'
AfterControlStatement: 'MultiLine'
AfterEnum : 'false'
AfterFunction : 'true'
AfterNamespace : 'false'
AfterStruct : 'false'
AfterUnion : 'false'
AfterCaseLabel : 'true'
BeforeCatch : 'false'
BeforeElse : 'false'
IndentBraces : 'false'
AfterExternBlock : 'false'
SplitEmptyFunction : 'false'
SplitEmptyRecord : 'false'
SplitEmptyNamespace : 'false'
BinPackArguments: false
AllowAllArgumentsOnNextLine: false
BinPackParameters: false
LambdaBodyIndentation: Signature
BitFieldColonSpacing: Both
BreakBeforeConceptDeclarations: true
BreakConstructorInitializers: AfterColon
BreakInheritanceList: AfterColon
BreakStringLiterals: false
CompactNamespaces: true
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 8
Cpp11BracedListStyle: true
EmptyLineAfterAccessModifier: Leave
EmptyLineBeforeAccessModifier: Always
FixNamespaceComments: false
IncludeBlocks: Regroup
# Ensure main include is top
IncludeIsMainRegex: '()?$'
IndentAccessModifiers: false
IndentCaseBlocks: false
IndentCaseLabels: false
IndentExternBlock: false
IndentGotoLabels: false
IndentPPDirectives: AfterHash
IndentRequires: false
IndentWidth: 4
AccessModifierOffset: -4 # Matches more well-established styles (modifier is indented to the parent scope)
IndentWrappedFunctionNames: false
InsertTrailingCommas: Wrapped
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 2 #Default: 1
NamespaceIndentation: None
PointerAlignment: Left
ReferenceAlignment: Left
SortIncludes: CaseSensitive
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceAroundPointerQualifiers: Before
SpaceBeforeAssignmentOperators: true
SpaceBeforeCpp11BracedList: true
SpaceBeforeCtorInitializerColon: true
SpaceBeforeCaseColon: false
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: Never
SpaceBeforeRangeBasedForLoopColon: true
SpaceBeforeSquareBrackets: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: Never
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInLineCommentPrefix:
Minimum: "1"
Maximum: "-1"
SpacesInParentheses: false
SpacesInSquareBrackets: false
TabWidth: 4
# Penalties relate to when a line exceeds the column limit
# These values are arbitrary (and are all user chosen)
# A column limit of zero means no line breaks will be inserted.
ColumnLimit: 0
PenaltyBreakAssignment: 1000 # IE break on: `auto var \n= Object()`;
# static void \n FunctionName();
PenaltyReturnTypeOnItsOwnLine: 1
# static void \n FunctionName(\n FirstParameterType parameter)
PenaltyBreakBeforeFirstCallParameter: 30
PenaltyBreakComment: 50 # Do not break on comment
# Break on operator `<<` (no penalty we like this)
PenaltyBreakFirstLessLess: 1
# Never break on string. This prevents grepping for said string.
# (This best-practice was taken from LinusTorvolds style guide for user strings)
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 1
#PenaltyBreakOpenParenthesis: 1
PenaltyExcessCharacter: 100
PenaltyIndentedWhitespace: 2
---
Language: Proto
# Don't format .proto files.
DisableFormat: true
```
</details>
Thanks,
Kevin
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1Wltz4joS_jXkRRXKFwzkIQ9AyBl2cmGB2ak9LynZlkETY_lIMgn767dbMrYxMMmcy1SSAelTq7vV3fokOxTx_vYLS1PR8SYd567jjOzf1YYRnkVpEbOYqIznOdOEZjHpRinN1teJkFuqScJTRt54mhLF1gktUk2a_deubwYdtwVdstpwRd6oIpopDTO8cb0h38Ii0wXxnK7Tsy1Hc_FMaZqmgN5xSjQoSAstoIdHhz74LDKiIslzTXIpdhzVD_dko3WuOv6o493DD811N013266Qa_jabRre8Scx05SnAJ9WTarYbqncQxOZSKo2BKaLXomWNGIE-kFKDTkS13fKH_P1le141uk5MduhNoNpx_NPPIY-6UZ5TuyY-cN0tJwSVYRbDmtAwmJNJMuF1ESLlmXQp5qmGe-X62hcFhntQ1De6F6avjTWxMU2R0mmyYGum7kUa0m3hMp1sWWZxokuqtsWZZZQFJqo_TYUKcnolinS8YYsU4VkZC8KsqE7RlDfawvi_2MS9MU-Seaj1RciJISWNrqzbMelyFARsqOSgFcfHv7z-LL87-P4-WH2-3TxgkOgGR2TC54ZD3Hd8W4qu8ApKQ_h7_uw_9LvXac8K96v11lhO1AgGNVVouuCqi-_P_VQPV_tlRvMJYg0Bq7QedPF0_LFdSV9exFKS0a3U97xxs677-KMAXwaJMwNQpbEgxu3E9z9ZRUGiyJb8nVG0y-wsimTarozUwZOe8rwpuf8ySmNxPgmiG68E0Ow7ZNSc70Bp8Qo1TlIdXt-dKRqvzeITNsnhdrog3AzyvoHuR4NaX_gH0n2w2CAbX9aMrg-MK19G-3u4PuGQ7jnsPiPNKNrJv2AprAeIynpfpZxzamJYfXAEv2vQmmecBZPn5-W7ovbn0ChvWO2PEGhUlOjOuudaO16vX9Ua887r_X0xw-jUn_QVikIk8E_q5KzZhmTVLMFy1NoN_WmjG532G8r5CVu_y_HzCDoe0FLsuth299nqr8SrywbQcruwcUD2JUipg6G-f324vveDf0Li18aNnTcxGkbFmPb32bYEGohk2DWUDLbMl18fVo6UBHvzdel3qdsaovXzVJD7VwvWDJ9WgYvQxN58G0GFXSgBRT-bB0sQDibTiEIfyz7L3OU5flWlob-kdZsm2P91UWZOsObuGWkE0ZB_Dca-au29T6wDYz_jGGB27Yr6jn1DtLagg2w5wyj4UeQQdz7fHChV_rolBf89gKUR-qXLQUCgyomR8U2oFEvckL_g_n7yYBVkCVbY5Jb0mbJI8wWCeAGyB-YWdtzLKqiZaDoCVn7HIubZTkwk5ppfZ7CkfLfaLmcLlYvq8U3WLLhkukvVI3iWEJyMwUtEqgPlNQu1SYtPQa_YFD3N6YX7I8Cea-cxWA_lF8zAK31JqQzGB9PZCazgrFvcFdR9QsIz4twrs8A488CjUTUzvPC-iO9MNy03RjaNf5nV_D4OPILy_gAwwrYeJDRThrkNYupjA3NhSiHH3dgu8ZUsfg5M4mP3b8JsYZPpm9kNtMEFvQ5Z9kYuOEr0wgapW90r8bAgl7BXf4dM1Fue2BIczQWjecESkkRaWDHhmkjicBxIxlyoOto0ogs-HqjGyMnQCRYVGi-YyOloKEi6k8iY-eBY67vOUvjD2B3DLwrTX5-gHykkRTnMFMVUcjkJ_YG1aW2qrkwBgeOk-B71fKNcd0YazDonIEHDE4LWQLTE9gK96QWDpzKTmYECs-xNE_EtvJYQlNVaZ-KN_iDRppFEbLJlJ6zJ_auH8Cm4wkOw-bgty3DAvCcNNz402HLDZzpxqmIXkH8aAm6pewAncIGsW9jJxCTDzRk6Sm-bYnBT7Ni-0nofZFFZt0_p8kswd3LcraTEU9sx2R7xAPdhjE9Bc8yDJQTtBD5B5pXmWYSEVKN43KJbMEgn7LVPmft8Dwe8QmcjbBHSGGMHGb3fdVeyQq-gl09Ba-cplEzGJshjqdKA5nA0UFsDwBo_S5pnsNs1TnWVGjUe5JSZcZ0vIF1iDdoQ0SmpUirJSrRxhDjy5MRGCnk50IPEXKAGRecoJ7w0J_bW5KfSbOF7wPQt6wx3yVbDzlxUS_r6wnV0eayLAuaQvNlzCzD7dsu2gdaTd-RK5vcvoxc5inXJr3avv0ZdsGAMcWfQX6wFlBg57BzjZp3PWcKYtV_XMsayFJQXQJb_Tb1xyLeWw-azECMudnA3e8oP8q9aiJSkS1BfZsFZCz05kIeQbxHLNftvKuT1GAvVHazsdisgQkb-Fm2YZIDQ4igACl9EWfLwgOcbyVN27bDbgMm6GopWoqd1wm8_gxbh6l7zxI-zJk83UPOj7Uu_s5j8BbAexUWTh6F8U0LMSwRee66JrZjtLbiPfV8JqZQDeOFUYTH2kcR442HtPs83bWhdn1OsbZqWvA9f6_cc2FzntkbTbtXGlLE1sC38yO-5_lkam8a8cxS3YJyRbTIj-TM1CMgQAZ7LzOjpOP-fcfrVQlyGIPuOjbhVD_EYCmqVTzbbXfvs92NknG2_zehxU-Gz-d3XLIIyVkd0nBE2TRBeBDhJdlsSGhC2pFzbPhzkihLda97BKkqecS6CvVwi8e4N5am13DSoWHK1QafJGAYmUvgbSkB14ObmaBbC3PRm1OJd7wqErAZV2fAplK4G7L4UCZNuJx4QTGpmySPGkg51IK-MpZXsalGerWBTR1Ouc_J2XV7pO81eiVwNCK8Frd3LboK4laVq6nFXJg7FENHD_tyzY4XLGHgh4hd6F8i77IBbDkDxNOSZYrjmteQbwrsb5fChlFYUm0KT0ySgxh9EfIg1jyi6ZO4DDmwnq9s_ybsUaquGRYGqZrFpfH_LqBOVTlk60Nzwc2IsmxUx5sL7L6BbZWvy7jjamlr-UUweLhCtI23kMYmcUbWCXyOka5aJLnRb66NzNHzXkgkwT9XcPlHQS2NhAPo2YWeZSaCzbyQauokbwxKlWepM0cktwmbZSPk42cNgM46oD6ab4aHydjwdXrMU89DNdRr3APrPbblD4BhlpaazyUcB94b3PkRDgfbYmurvefiNcahh743eq7rroPYj0356SqsaNguqfV-NWdgPl4HEckwh7Agvm1YRijBAwdh7xFjsbJP8kRabDNo33JdSyBkhaqRHU0LEAN6wG95e4BlF58HmsY0JQVUSBJthGJZXWVBxuhINhEJgcwQZMtopkgmrCohUh1ln_2G-KwYyy2Luwd-gQIejG5g6NGtjzVyb09eVUqb2HIcx2wis6mVT2ysd_oOPuq1D_2CCbTdkefwB-xu5T7dd-qLpsoMpc2j4Z3gsRlFmtvFYYMfH-lUnwGfsxkw3LfsQLPcX5Zu2rg0sW95MMrFvc1-q1ze9IfNOzNsQhu3CKiCf9GLZZQjKLAOvBOwULpyIiyoRbSMGB_6RVlQiXHlBH_6KGkIy53bmWAzh5V_xcfIXJ1V3qj9AOwAf886zdSIWitlmHL5NkAuoROKDFlLZo66JMFnv5THB1wtBxQzY0LgFtc5JBosBbPvE9BXSJdEii2BpStgl5Y7kULKGOZB1gUHCoiCTfCr8gR_zhpL4w9hecn1Z874Tcs9vwnG28GqfPCmi0rU9B3J1WRD0SS76u5h7hIyK7lS_QDNUJCmftfX14eDVn3HOZfAF2sP3oGecDYm5cVpN8du8zqHKv18xxXQNmYfU5zbxn75Sne1oRlwquMXTb7iGxFX8a0f3_g39EpznbLbcbE-96bBmVdJqvdOrgqZ3h6_DLHmelOEXYh9fKCR7g7_QcQIWzzuuVIFXr7fBz1v6FxtbuPYob3EcWjisdD34sAf-gEd9nyP0cCPvKvUUO7bToC34hl7I0YE7hLB3RW_9RzPc3xn6PZh4YbdXn-YxMHAi6Oo7-Ozj57D4DSSVu9oXMlboxK-uAGdQJN1_QLHFTXlkTEzHciHKrgR8vZVYuv-mr3vsysz_63R__9C0m1U">