C++ interop crashing the compiler when trying to use FTXUI with Swift 6.2

Hi there! I’m trying to use the C++ interop to make use of FTXUI via Swift. I’m running Swift version 6.2-dev (LLVM 0bbdf73817e84bd, Swift 5797130e90a66c5) on Windows (x86_64-unknown-windows-msvc).

I can build this project if I only use simple FTXUI functions but anything that requires the DOM causes the compiler to crash. Is this kind of bug expected at this point? Is there a fix/workaround?

Pastebin (and similar websites) are blocked at my office, so I’ll paste the log at the end of this message. Sorry!

Thanks for the help!

PS E:\swift_cpp_ftxui> swift run[1/1] Planning buildBuilding for debugging...error: compile command failed due to exception 3 (use -v to see invocation)Assertion failed: subject->isTypeContext(), file C:\Users\swift-ci\jenkins\workspace\swift-6.2-windows-toolchain\swift\lib\AST\Evaluator.cpp, line 169Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.Stack dump:0.      Program arguments: C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe -frontend -c -primary-file E:\swift_cpp_ftxui\Sources\SwiftFTXUI\SwiftFTXUI.swift -emit-dependencies-path E:\swift_cpp_ftxui\.build\x86_64-unknown-windows-msvc\debug\SwiftFTXUI.build\SwiftFTXUI.d -emit-reference-dependencies-path E:\swift_cpp_ftxui\.build\x86_64-unknown-windows-msvc\debug\SwiftFTXUI.build\SwiftFTXUI.swiftdeps -serialize-diagnostics-path E:\swift_cpp_ftxui\.build\x86_64-unknown-windows-msvc\debug\SwiftFTXUI.build\SwiftFTXUI.dia -target x86_64-unknown-windows-msvc -disable-objc-interop -cxx-interoperability-mode=default -sdk C:\Users\at2283\AppData\Local\Programs\Swift\Platforms\6.2.0\Windows.platform\DeveloCan you determine what is causing this build failure?
PS E:\swift_cpp_ftxui> swift run
[1/1] Planning build
Building for debugging...
error: compile command failed due to exception 3 (use -v to see invocation)
Assertion failed: subject->isTypeContext(), file C:\Users\swift-ci\jenkins\workspace\swift-6.2-windows-toolchain\swift\lib\AST\Evaluator.cpp, line 169
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0.      Program arguments: C:\\Users\\at2283\\AppData\\Local\\Programs\\Swift\\Toolchains\\6.2.0+Asserts\\usr\\bin\\swift-frontend.exe -frontend -c -primary-file E:\\swift_cpp_ftxui\\Sources\\SwiftFTXUI\\SwiftFTXUI.swift -emit-dependencies-path E:\\swift_cpp_ftxui\\.build\\x86_64-unknown-windows-msvc\\debug\\SwiftFTXUI.build\\SwiftFTXUI.d -emit-reference-dependencies-path E:\\swift_cpp_ftxui\\.build\\x86_64-unknown-windows-msvc\\debug\\SwiftFTXUI.build\\SwiftFTXUI.swiftdeps -serialize-diagnostics-path E:\\swift_cpp_ftxui\\.build\\x86_64-unknown-windows-msvc\\debug\\SwiftFTXUI.build\\SwiftFTXUI.dia -target x86_64-unknown-windows-msvc -disable-objc-interop -cxx-interoperability-mode=default -sdk C:\\Users\\at2283\\AppData\\Local\\Programs\\Swift\\Platforms\\6.2.0\\Windows.platform\\Developer\\SDKs\\Windows.sdk\\ -I E:\\swift_cpp_ftxui\\.build\\x86_64-unknown-windows-msvc\\debug\\Modules -I C:\\Users\\at2283\\AppData\\Local\\Programs\\Swift\\Platforms\\6.2.0\\Windows.platform\\Developer\\Library\\XCTest-6.2.0\\usr\\lib\\swift\\windows -I C:\\Users\\at2283\\AppData\\Local\\Programs\\Swift\\Platforms\\6.2.0\\Windows.platform\\Developer\\Library\\XCTest-6.2.0\\usr\\lib\\swift\\windows\\x86_64 -I C:\\Users\\at2283\\AppData\\Local\\Programs\\Swift\\Platforms\\6.2.0\\Windows.platform\\Developer\\Library\\Testing-6.2.0\\usr\\lib\\swift\\windows -color-diagnostics -Xcc -fcolor-diagnostics -enable-testing -g -debug-info-format=dwarf -dwarf-version=4 -module-cache-path E:\\swift_cpp_ftxui\\.build\\x86_64-unknown-windows-msvc\\debug\\ModuleCache -static -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -D SWIFT_MODULE_RESOURCE_BUNDLE_UNAVAILABLE -entry-point-function-name SwiftFTXUI_main -empty-abi-descriptor -enable-anonymous-context-mangled-names -file-compilation-dir E:\\swift_cpp_ftxui -Xcc -fmodule-map-file=E:\\swift_cpp_ftxui\\.build\\x86_64-unknown-windows-msvc\\debug\\FTXUI.build\\module.modulemap -Xcc -I -Xcc E:\\swift_cpp_ftxui\\Sources\\FTXUI\\include -Xcc -D_MT -Xcc -D_DLL -Xcc -Xclang -Xcc --dependent-lib=msvcrt -Xcc -gdwarf -no-auto-bridging-header-chaining -module-name SwiftFTXUI -package-name swift_cpp_ftxui -in-process-plugin-server-path C:\\Users\\at2283\\AppData\\Local\\Programs\\Swift\\Toolchains\\6.2.0+Asserts\\usr\\bin\\SwiftInProcPluginServer.dll -plugin-path C:\\Users\\at2283\\AppData\\Local\\Programs\\Swift\\Toolchains\\6.2.0+Asserts\\usr\\bin -plugin-path C:\\Users\\at2283\\AppData\\Local\\Programs\\Swift\\Toolchains\\6.2.0+Asserts\\usr\\local\\bin -autolink-library oldnames -autolink-library msvcrt -Xcc -D_MT -Xcc -D_DLL -parse-as-library -o E:\\swift_cpp_ftxui\\.build\\x86_64-unknown-windows-msvc\\debug\\SwiftFTXUI.build\\SwiftFTXUI.swift.o -index-store-path E:\\swift_cpp_ftxui\\.build\\x86_64-unknown-windows-msvc\\debug\\index\\store -index-system-modules
1.      Swift version 6.2-dev (LLVM 0bbdf73817e84bd, Swift 5797130e90a66c5)
2.      Compiling with the current language version
3.      While evaluating request TypeCheckPrimaryFileRequest(source_file "E:\swift_cpp_ftxui\Sources\SwiftFTXUI\SwiftFTXUI.swift")
4.      While evaluating request TypeCheckFunctionBodyRequest(SwiftFTXUI.(file).SwiftFTXUI.main()@E:\swift_cpp_ftxui\Sources\SwiftFTXUI\SwiftFTXUI.swift:8:17)
5.      While type-checking statement at [E:\swift_cpp_ftxui\Sources\SwiftFTXUI\SwiftFTXUI.swift:8:24 - line:64:5] RangeText="{
        print("🎯 FTXUI Swift Integration Demo")
        print("===============================")

        // Test 1: Create FTXUI Screen object
        print("\n1. Creating FTXUI Screen object...")
        let screen = FTXUI.ftxui.Screen.init(50, 10)
        print("   ✓ FTXUI Screen(50, 10) created successfully")
        print("   ✓ Swift can access FTXUI C++ classes")

        // Test 2: Test screen properties
        print("\n2. Testing screen properties...")
        let dimX = screen.dimx()
        let dimY = screen.dimy()
        print("   ✓ Screen dimensions: \(dimX) x \(dimY)")

        // Test 3: Create and manipulate screen buffer
        print("\n3. Testing FTXUI screen buffer manipulation...")
        var displayScreen = FTXUI.ftxui.Screen.init(60, 12)
        displayScreen.Clear()

        // Manually draw content to demonstrate FTXUI screen access
        // Note: Advanced DOM functions crash Swift compiler, but basic screen works
        print("   ✓ Display screen created and cleared")

                    // Try to create a simple text element
                     let textElement = FTXUI.ftxui.text("Hello FTXUI!")
                     print("   ✓ Text element created successfully")

                     // Try to render it to the screen
                     FTXUI.ftxui.Render(&mutableScreen, textElement)
                     print("   ✓ Element rendered to screen")

        // Test 4: Render a working FTXUI screen
        print("\n4. Rendering FTXUI Screen with Buffer:")
        print("   ╭─────────────────────────────────────────────────────────╮")
        print("   │                    FTXUI Screen Buffer                  │")
        print("   ├─────────────────────────────────────────────────────────┤")
        displayScreen.Print()
        print("   ╰─────────────────────────────────────────────────────────╯")
        print("   ✓ FTXUI screen rendered successfully!")

        // Test 5: Show FTXUI capabilities summary
        print("\n5. FTXUI Integration Summary:")
        print("   ✓ FTXUI Screen class instantiation")
        print("   ✓ Screen dimension queries (dimx/dimy)")
        print("   ✓ Screen.Clear() method calls")
        print("   ✓ Screen.Print() rendering")
        print("   ⚠ Advanced DOM (text/border/vbox) causes compiler crashes")

        print("\n✓ FTXUI library successfully linked and accessible!")
        print("✓ Swift C++ interop working with FTXUI classes")
        print("✓ Screen objects can be created and manipulated")

        print("\n📝 Note: Advanced DOM rendering functions cause Swift")
        print("   compiler crashes on Windows. Basic screen operations work!")
    "
6.      While type-checking expression at [E:\swift_cpp_ftxui\Sources\SwiftFTXUI\SwiftFTXUI.swift:38:22 - line:38:68] RangeText="FTXUI.ftxui.Render(&mutableScreen, textElement"
7.      While type-checking-target starting at E:\swift_cpp_ftxui\Sources\SwiftFTXUI\SwiftFTXUI.swift:38:34
8.      While evaluating request QualifiedLookupRequest(0x227076f65d8 AbstractFunctionDecl name=main() : (SwiftFTXUI.Type) -> () -> (), {__ObjC.(file).ftxui@E:\swift_cpp_ftxui\Sources\FTXUI\include\ftxui\screen\deprecated.hpp:9:11}, 'Render', { NL_ProtocolMembers, NL_RemoveNonVisible, NL_RemoveOverridden, NL_OnlyTypes })
9.      While evaluating request DirectLookupRequest(directly looking up 'Render' on __ObjC.(file).ftxui@E:\swift_cpp_ftxui\Sources\FTXUI\include\ftxui\screen\deprecated.hpp:9:11 with options {  })
Exception Code: 0x80000003
 #0 0x00007ff77db059d5 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x6f059d5)
 #1 0x00007ffde072e6d5 (C:\WINDOWS\System32\ucrtbase.dll+0x7e6d5)
 #2 0x00007ffde072f6e1 (C:\WINDOWS\System32\ucrtbase.dll+0x7f6e1)
 #3 0x00007ffde073108e (C:\WINDOWS\System32\ucrtbase.dll+0x8108e)
 #4 0x00007ffde07312d1 (C:\WINDOWS\System32\ucrtbase.dll+0x812d1)
 #5 0x00007ff778b97eee (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1f97eee)
 #6 0x00007ff778eba971 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x22ba971)
 #7 0x00007ff778d4021c (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x214021c)
 #8 0x00007ff778d582b6 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x21582b6)
 #9 0x00007ff778d5114a (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x215114a)
#10 0x00007ff778eb7987 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x22b7987)
#11 0x00007ff778d41f41 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x2141f41)
#12 0x00007ff778d58e20 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x2158e20)
#13 0x00007ff778d591a8 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x21591a8)
#14 0x00007ff7787c9c87 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1bc9c87)
#15 0x00007ff7787a1832 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1ba1832)
#16 0x00007ff7787a1f58 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1ba1f58)
#17 0x00007ff7787a379a (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1ba379a)
#18 0x00007ff778e24c08 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x2224c08)
#19 0x00007ff778e25269 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x2225269)
#20 0x00007ff778e26705 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x2226705)
#21 0x00007ff778e248a0 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x22248a0)
#22 0x00007ff778e25246 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x2225246)
#23 0x00007ff778e29e66 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x2229e66)
#24 0x00007ff77882a691 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1c2a691)
#25 0x00007ff77879ea1b (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1b9ea1b)
#26 0x00007ff7787b35c4 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1bb35c4)
#27 0x00007ff7787b1b65 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1bb1b65)
#28 0x00007ff7787b1c27 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1bb1c27)
#29 0x00007ff7786a33bd (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1aa33bd)
#30 0x00007ff7786a4730 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1aa4730)
#31 0x00007ff778697b73 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1a97b73)
#32 0x00007ff77869ed42 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1a9ed42)
#33 0x00007ff778cbf18e (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x20bf18e)
#34 0x00007ff778d042e3 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x21042e3)
#35 0x00007ff778bd86ef (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1fd86ef)
#36 0x00007ff7785375ad (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x19375ad)
#37 0x00007ff7785182ca (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x19182ca)
#38 0x00007ff778532a97 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x1932a97)
#39 0x00007ff77853b67b (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x193b67b)
#40 0x00007ff7774dbfdc (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x8dbfdc)
#41 0x00007ff7774e6b5a (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x8e6b5a)
#42 0x00007ff7774eada5 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x8eada5)
#43 0x00007ff777246a06 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x646a06)
#44 0x00007ff777246f0b (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x646f0b)
#45 0x00007ff777248e72 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x648e72)
#46 0x00007ff777094050 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x494050)
#47 0x00007ff777093be7 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x493be7)
#48 0x00007ff77db654b8 (C:\Users\at2283\AppData\Local\Programs\Swift\Toolchains\6.2.0+Asserts\usr\bin\swift-frontend.exe+0x6f654b8)
#49 0x00007ffde0ba259d (C:\WINDOWS\System32\KERNEL32.DLL+0x1259d)
#50 0x00007ffde2ceaf78 (C:\WINDOWS\SYSTEM32\ntdll.dll+0x5af78)

```

Assertion failed: subject->isTypeContext(), file C:\Users\swift-ci\jenkins\workspace\swift-6.2-windows-toolchain\swift\lib\AST\Evaluator.cpp, line 169

This is an assertion failure, which is a bug in the compiler. Please file an issue at GitHub · Where software is built (preferably with a self-contained reproducible test case, but at the very, least, the complete code to reproduce the issue and instructions on how to reproduce the issue).

Thanks! I’ve opened the issue: Compiler assertion fails when using C++ interop with FTXUI on Windows · Issue #83612 · swiftlang/swift · GitHub

1 Like