Skip to content

AST verifier failure InOutToPointerExpr in unexpected position! #70405

Open
@compnerd

Description

@compnerd

Description

There is an assertion failure that occurs with the following piece of code:

Reproduction

// RUN: %swiftc -typecheck %s -parse-as-library

func withArgPointers(_ args: UnsafeMutableRawPointer?...) {
    print(args)
}
func call() {
    var int: Int = 1
    withArgPointers(&int)
}
InOutToPointerExpr in unexpected position!
(inout_to_pointer implicit type="UnsafeMutableRawPointer" location=C:\\Users\\abdulras\\AppData\\Local\\Temp\\reduced.swift:6:21 range=[C:\\Users\\abdulras\\AppData\\Local\\Temp\\reduced.swift:6:21 - line:6:22]
  (inout_expr type="inout Int" location=C:\\Users\\abdulras\\AppData\\Local\\Temp\\reduced.swift:6:21 range=[C:\\Users\\abdulras\\AppData\\Local\\Temp\\reduced.swift:6:21 - line:6:22]
    (declref_expr type="@lvalue Int" location=C:\\Users\\abdulras\\AppData\\Local\\Temp\\reduced.swift:6:22 range=[C:\\Users\\abdulras\\AppData\\Local\\Temp\\reduced.swift:6:22 - line:6:22] decl="reduced.(file).call().int@C:\\Users\\abdulras\\AppData\\Local\\Temp\\reduced.swift:5:9" function_ref=unapplied)))
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0.      Program arguments: S:\\b\\1\\bin\\swiftc.exe -frontend -typecheck -primary-file C:\\Users\\abdulras\\AppData\\Local\\Temp\\reduced.swift -target x86_64-unknown-windows-msvc -disable-objc-interop -sdk "S:\\Program Files\\Swift\\Platforms\\Windows.platform\\Developer\\SDKs\\Windows.sdk" -color-diagnostics -plugin-path S:\\b\\1\\bin -autolink-library oldnames -autolink-library msvcrt -Xcc -D_MT -Xcc -D_DLL -parse-as-library -module-name reduced
1.      Swift version 5.11-dev (LLVM 572a5a4fbafb69e, Swift ebbb9de104d5682)
2.      Compiling with the current language version
3.      While walking into body of 'call()' (at C:\Users\abdulras\AppData\Local\Temp\reduced.swift:4:1)
4.      While verifying InOutToPointer expression at [C:\Users\abdulras\AppData\Local\Temp\reduced.swift:6:21 - line:6:22] RangeText="&"
Exception Code: 0x80000003
0x00007FF73C9F6175, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x5FE6175 byte(s), HandleAbort() + 0x5 byte(s), S:\SourceCache\swift-project\llvm-project\llvm\lib\Support\Windows\Signals.inc, line 419 + 0x0 byte(s)
0x00007FFCF61DE5F5, C:\Windows\System32\ucrtbase.dll(0x00007FFCF6160000) + 0x7E5F5 byte(s), raise() + 0x1E5 byte(s)
0x00007FFCF61DF601, C:\Windows\System32\ucrtbase.dll(0x00007FFCF6160000) + 0x7F601 byte(s), abort() + 0x31 byte(s)
0x00007FF7387B6346, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1DA6346 byte(s), `anonymous namespace'::Verifier::verifyChecked() + 0x366 byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTVerifier.cpp, line 1491 + 0x6 byte(s)
0x00007FF7387A9FAE, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1D99FAE byte(s), `anonymous namespace'::Verifier::dispatchVisitPost<swift::InOutToPointerExpr *>() + 0x10E byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTVerifier.cpp, line 465 + 0x0 byte(s)
0x00007FF7387BDAF0, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1DADAF0 byte(s), `anonymous namespace'::Verifier::walkToExprPost() + 0x14B0 byte(s), S:\SourceCache\swift-project\swift\include\swift\AST\ExprNodes.def, line 179 + 0xF byte(s)
0x00007FF7386F4CE8, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4CE8 byte(s), llvm::function_ref<swift::ASTWalker::PostWalkResult<swift::Expr *> __cdecl(swift::Expr *)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_2> >() + 0x18 byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0xC byte(s)
0x00007FF7386F4FFC, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4FFC byte(s), `anonymous namespace'::Traversal::doIt() + 0x9C byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1513 + 0x89 byte(s)
0x00007FF7386F5D61, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE5D61 byte(s), swift::ASTVisitor<`anonymous namespace'::Traversal,swift::Expr *,swift::Stmt *,bool,swift::Pattern *,bool,void>::visit() + 0x101 byte(s), S:\SourceCache\swift-project\swift\include\swift\AST\ASTVisitor.h, line 69 + 0x24 byte(s)
0x00007FF7386F4940, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4940 byte(s), llvm::function_ref<swift::Expr * __cdecl(swift::Expr *)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_1> >() + 0x30 byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0x2A byte(s)
0x00007FF7386F4FEA, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4FEA byte(s), `anonymous namespace'::Traversal::doIt() + 0x8A byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1513 + 0x77 byte(s)
0x00007FF7386F8C4C, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE8C4C byte(s), `anonymous namespace'::Traversal::visitCollectionExpr() + 0x6C byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 670 + 0xB byte(s)
0x00007FF7386F603A, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE603A byte(s), swift::ASTVisitor<`anonymous namespace'::Traversal,swift::Expr *,swift::Stmt *,bool,swift::Pattern *,bool,void>::visit() + 0x3DA byte(s), S:\SourceCache\swift-project\swift\include\swift\AST\ASTVisitor.h, line 69 + 0xB byte(s)
0x00007FF7386F4940, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4940 byte(s), llvm::function_ref<swift::Expr * __cdecl(swift::Expr *)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_1> >() + 0x30 byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0x2A byte(s)
0x00007FF7386F4FEA, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4FEA byte(s), `anonymous namespace'::Traversal::doIt() + 0x8A byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1513 + 0x77 byte(s)
0x00007FF7386F5D61, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE5D61 byte(s), swift::ASTVisitor<`anonymous namespace'::Traversal,swift::Expr *,swift::Stmt *,bool,swift::Pattern *,bool,void>::visit() + 0x101 byte(s), S:\SourceCache\swift-project\swift\include\swift\AST\ASTVisitor.h, line 69 + 0x24 byte(s)
0x00007FF7386F4940, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4940 byte(s), llvm::function_ref<swift::Expr * __cdecl(swift::Expr *)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_1> >() + 0x30 byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0x2A byte(s)
0x00007FF7386F4FEA, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4FEA byte(s), `anonymous namespace'::Traversal::doIt() + 0x8A byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1513 + 0x77 byte(s)
0x00007FF7386F49ED, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE49ED byte(s), llvm::function_ref<bool __cdecl(void)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_1> >() + 0x1D byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0xC byte(s)
0x00007FF7386F48A6, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE48A6 byte(s), llvm::function_ref<swift::ArgumentList * __cdecl(swift::ArgumentList *)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_1> >() + 0xA6 byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0x8F byte(s)
0x00007FF7386F4EAE, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4EAE byte(s), `anonymous namespace'::Traversal::doIt() + 0x8E byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1681 + 0x7B byte(s)
0x00007FF7386F6228, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE6228 byte(s), swift::ASTVisitor<`anonymous namespace'::Traversal,swift::Expr *,swift::Stmt *,bool,swift::Pattern *,bool,void>::visit() + 0x5C8 byte(s), S:\SourceCache\swift-project\swift\include\swift\AST\ASTVisitor.h, line 69 + 0x31 byte(s)
0x00007FF7386F4940, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4940 byte(s), llvm::function_ref<swift::Expr * __cdecl(swift::Expr *)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_1> >() + 0x30 byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0x2A byte(s)
0x00007FF7386F4FEA, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4FEA byte(s), `anonymous namespace'::Traversal::doIt() + 0x8A byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1513 + 0x77 byte(s)
0x00007FF7386F82F3, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE82F3 byte(s), `anonymous namespace'::Traversal::visitBraceStmt() + 0x73 byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1736 + 0x8 byte(s)
0x00007FF7386F6D04, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE6D04 byte(s), swift::ASTVisitor<`anonymous namespace'::Traversal,swift::Expr *,swift::Stmt *,bool,swift::Pattern *,bool,void>::visit() + 0x44 byte(s), S:\SourceCache\swift-project\swift\include\swift\AST\StmtNodes.def, line 47 + 0xB byte(s)
0x00007FF7386F49C0, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE49C0 byte(s), llvm::function_ref<swift::Stmt * __cdecl(swift::Stmt *)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_1> >() + 0x30 byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0x2A byte(s)
0x00007FF7386F526B, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE526B byte(s), `anonymous namespace'::Traversal::doIt() + 0x8B byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1521 + 0x78 byte(s)
0x00007FF7386F7FE3, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE7FE3 byte(s), `anonymous namespace'::Traversal::visitAbstractFunctionDecl() + 0x193 byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 528 + 0x10 byte(s)
0x00007FF7386F4AAA, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE4AAA byte(s), llvm::function_ref<bool __cdecl(void)>::callback_fn<``anonymous namespace'::Traversal::doIt'::`2'::<lambda_1> >() + 0x3A byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0x34 byte(s)
0x00007FF7386F5801, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE5801 byte(s), `anonymous namespace'::Traversal::doIt() + 0x91 byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 1556 + 0x73 byte(s)
0x00007FF7386F9EB6, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1CE9EB6 byte(s), swift::Decl::walk() + 0x16 byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTWalker.cpp, line 2282 + 0x0 byte(s)
0x00007FF7384EDD8D, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1ADDD8D byte(s), swift::SourceFile::walk() + 0xFD byte(s), S:\SourceCache\swift-project\swift\lib\AST\Module.cpp, line 4035 + 0x8 byte(s)
0x00007FF7387B1CCF, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1DA1CCF byte(s), swift::verify() + 0x8F byte(s), S:\SourceCache\swift-project\swift\lib\AST\ASTVerifier.cpp, line 3920 + 0x0 byte(s)
0x00007FF738789B75, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1D79B75 byte(s), swift::TypeCheckSourceFileRequest::cacheResult() + 0x65 byte(s), S:\SourceCache\swift-project\swift\lib\AST\TypeCheckRequests.cpp, line 1526 + 0x0 byte(s)
0x00007FF737EE2AFE, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x14D2AFE byte(s), swift::Evaluator::getResultCached<swift::TypeCheckSourceFileRequest,0>() + 0x1EE byte(s), S:\SourceCache\swift-project\swift\include\swift\AST\Evaluator.h, line 406 + 0x0 byte(s)
0x00007FF737EE0546, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x14D0546 byte(s), swift::evaluateOrDefault<swift::TypeCheckSourceFileRequest>() + 0x26 byte(s), S:\SourceCache\swift-project\swift\include\swift\AST\Evaluator.h, line 104 + 0x0 byte(s)
0x00007FF737EEDDF6, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x14DDDF6 byte(s), swift::performTypeChecking() + 0x46 byte(s), S:\SourceCache\swift-project\swift\lib\Sema\TypeChecker.cpp, line 253 + 0x0 byte(s)
0x00007FF736FC50EC, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x5B50EC byte(s), llvm::function_ref<bool __cdecl(swift::SourceFile &)>::callback_fn<`swift::CompilerInstance::performSema'::`2'::<lambda_1> >() + 0xC byte(s), S:\SourceCache\swift-project\llvm-project\llvm\include\llvm\ADT\STLFunctionalExtras.h, line 45 + 0x8 byte(s)
0x00007FF736FCC43E, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x5BC43E byte(s), swift::CompilerInstance::forEachFileToTypeCheck() + 0x11E byte(s), S:\SourceCache\swift-project\swift\lib\Frontend\Frontend.cpp, line 1534 + 0xF byte(s)
0x00007FF736FD0495, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x5C0495 byte(s), swift::CompilerInstance::performSema() + 0x95 byte(s), S:\SourceCache\swift-project\swift\lib\Frontend\Frontend.cpp, line 1459 + 0x0 byte(s)
0x00007FF736D6A0DA, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x35A0DA byte(s), performAction() + 0x45A byte(s), S:\SourceCache\swift-project\swift\lib\FrontendTool\FrontendTool.cpp, line 1442 + 0x36 byte(s)
0x00007FF736D6A69E, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x35A69E byte(s), performCompile() + 0x1BE byte(s), S:\SourceCache\swift-project\swift\lib\FrontendTool\FrontendTool.cpp, line 1515 + 0x0 byte(s)
0x00007FF736D6CCA6, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x35CCA6 byte(s), swift::performFrontend() + 0xAD6 byte(s), S:\SourceCache\swift-project\swift\lib\FrontendTool\FrontendTool.cpp, line 2461 + 0x12 byte(s)
0x00007FF736BD837C, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1C837C byte(s), run_driver() + 0xEC byte(s), S:\SourceCache\swift-project\swift\lib\DriverTool\driver.cpp, line 239 + 0x54 byte(s)
0x00007FF736BD7F4D, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x1C7F4D byte(s), swift::mainEntry() + 0xE1D byte(s), S:\SourceCache\swift-project\swift\lib\DriverTool\driver.cpp, line 505 + 0x36 byte(s)
0x00007FF73CA5494C, S:\b\1\bin\swiftc.exe(0x00007FF736A10000) + 0x604494C byte(s), __scrt_common_main_seh() + 0x10C byte(s), D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl, line 288 + 0x22 byte(s)
0x00007FFCF766257D, C:\Windows\System32\KERNEL32.DLL(0x00007FFCF7650000) + 0x1257D byte(s), BaseThreadInitThunk() + 0x1D byte(s)
0x00007FFCF896AA58, C:\Windows\SYSTEM32\ntdll.dll(0x00007FFCF8910000) + 0x5AA58 byte(s), RtlUserThreadStart() + 0x28 byte(s)

Expected behavior

This should typecheck correctly.

Environment

compnerd.org Swift version 5.11-dev (LLVM 1f241dbf95c74ca, Swift e6ec9b0)
Target: x86_64-unknown-windows-msvc

Additional information

Reduced from migueldeicaza/SwiftGodot#299

Metadata

Metadata

Assignees

Labels

assertion failureBug → crash: An assertion failurebugA deviation from expected or documented behavior. Also: expected but undesirable behavior.compilerThe Swift compiler itselfcrashBug: A crash, i.e., an abnormal termination of softwareexpressionsFeature: expressionsfunction parametersFeature → declarations: function parametersin-out expressionsFeature → expressions: In-out expressionsswift 6.0type checkerArea → compiler: Semantic analysisvariadic parametersFeature → declarations → function parameters: Variadic function parametersverifier

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions