Hey,
I ran into a compiler crash that didn't appear in a simple test app, but showed up when copied into our main app... eventually I deleted everything and ended up with a 2 line file that reproduces the crash - but only when cxxinterop is enabled. Any idea of how I can work around this for now?
opened 12:48AM - 09 Feb 24 UTC
bug
crash
triage needed
### Description
The simple code below crashes when compiled on windows, but onl… y when run with .interoperabilityMode(.Cxx) (commenting out that swift setting fixes the problem)
### Reproduction
```swift
import WinSDK
var pe32: PROCESSENTRY32W = PROCESSENTRY32W()
pe32.dwSize = DWORD(MemoryLayout<PROCESSENTRY32W>.size)
```
### Stack dump
```text
error: failed parsing the Swift compiler output: unexpected JSON message: {
"exception" : 3,
"kind" : "abnormal-exit",
"name" : "compile",
"output" : "Assertion failed: NextOffset <= TotalStride, file C:\\Users\\swift-ci\\jenkins\\workspace\\oss-swift-windows-toolchain\\swift\\lib\\IRGen\\GenStruct.cpp, line 1394\r\nPlease submit a bug report (https:\/\/swift.org\/contributing\/#reporting-bugs) and include the crash backtrace.\r\nStack dump:\r\n0.\tProgram arguments: C:\/Library\/Developer\/Toolchains\/unknown-Asserts-development.xctoolchain\/usr\/bin\/swift-frontend.exe -frontend -c C:\\\\Users\\\\mike\\\\ppid\\\\Sources\\\\main.swift -emit-module-path C:\\\\Users\\\\mike\\\\ppid\\\\.build\\\\x86_64-unknown-windows-msvc\\\\release\\\\ppid.swiftmodule -emit-module-doc-path C:\\\\Users\\\\mike\\\\ppid\\\\.build\\\\x86_64-unknown-windows-msvc\\\\release\\\\ppid.swiftdoc -emit-module-source-info-path C:\\\\Users\\\\mike\\\\ppid\\\\.build\\\\x86_64-unknown-windows-msvc\\\\release\\\\ppid.swiftsourceinfo -emit-dependencies-path C:\\\\Users\\\\mike\\\\ppid\\\\.build\\\\x86_64-unknown-windows-msvc\\\\release\\\\ppid.build\\\\ppid.d -target x86_64-unknown-windows-msvc -disable-objc-interop -cxx-interoperability-mode=default -sdk C:\\\\Library\\\\Developer\\\\Platforms\\\\Windows.platform\\\\Developer\\\\SDKs\\\\Windows.sdk -I C:\\\\Users\\\\mike\\\\ppid\\\\.build\\\\x86_64-unknown-windows-msvc\\\\release -I C:\\\\Library\\\\Developer\\\\Platforms\\\\Windows.platform\\\\Developer\\\\Library\\\\XCTest-development\\\\usr\\\\lib\\\\swift\\\\windows -I C:\\\\Library\\\\Developer\\\\Platforms\\\\Windows.platform\\\\Developer\\\\Library\\\\XCTest-development\\\\usr\\\\lib\\\\swift\\\\windows\\\\x86_64 -color-diagnostics -g -module-cache-path C:\\\\Users\\\\mike\\\\ppid\\\\.build\\\\x86_64-unknown-windows-msvc\\\\release\\\\ModuleCache -swift-version 5 -O -D SWIFT_PACKAGE -empty-abi-descriptor -resource-dir C:\\\\Library\\\\Developer\\\\Toolchains\\\\unknown-Asserts-development.xctoolchain\\\\usr\\\\lib\\\\swift -Xcc -D_MT -Xcc -D_DLL -Xcc -Xclang -Xcc --dependent-lib=msvcrt -module-name ppid -package-name ppid -plugin-path C:\\\\Library\\\\Developer\\\\Toolchains\\\\unknown-Asserts-development.xctoolchain\\\\usr\\\\bin -plugin-path C:\\\\Library\\\\Developer\\\\Toolchains\\\\unknown-Asserts-development.xctoolchain\\\\usr\\\\local\\\\bin -enable-default-cmo -num-threads 8 -o C:\\\\Users\\\\mike\\\\ppid\\\\.build\\\\x86_64-unknown-windows-msvc\\\\release\\\\ppid.build\\\\main.swift.o\r\n1.\tSwift version 5.9.1 (swift-5.9.1-RELEASE)\r\n2.\tCompiling with the current language version\r\n3.\tWhile evaluating request ExecuteSILPipelineRequest(Run pipelines { PrepareOptimizationPasses, EarlyModulePasses, HighLevel,Function+EarlyLoopOpt, HighLevel,Module+StackPromote, MidLevel,Function, ClosureSpecialize, LowLevel,Function, LateLoopOpt, SIL Debug Info Generator } on SIL for ppid)\r\n4.\tWhile running pass #11977 SILModuleTransform \"TargetConstantFolding\".\r\n5.\tWhile converting type 'tagPROCESSENTRY32W'\r\nException Code: 0x80000003\r\n #0 0x00007ff7e097a7a5 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x56da7a5)\r\n #1 0x00007fff2267e5f5 (C:\\WINDOWS\\System32\\ucrtbase.dll+0x7e5f5)\r\n #2 0x00007fff2267f601 (C:\\WINDOWS\\System32\\ucrtbase.dll+0x7f601)\r\n #3 0x00007fff22680fae (C:\\WINDOWS\\System32\\ucrtbase.dll+0x80fae)\r\n #4 0x00007fff226811f1 (C:\\WINDOWS\\System32\\ucrtbase.dll+0x811f1)\r\n #5 0x00007ff7db8bcbc7 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x61cbc7)\r\n #6 0x00007ff7db8bd3c3 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x61d3c3)\r\n #7 0x00007ff7db7601b6 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x4c01b6)\r\n #8 0x00007ff7db76128a (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x4c128a)\r\n #9 0x00007ff7db7674b8 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x4c74b8)\r\n#10 0x00007ff7db76762b (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x4c762b)\r\n#11 0x00007ff7dbdf79a9 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0xb579a9)\r\n#12 0x00007ff7dbdf7489 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0xb57489)\r\n#13 0x00007ff7dbdf7c62 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0xb57c62)\r\n#14 0x00007ff7dbb2f518 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x88f518)\r\n#15 0x00007ff7dbb2d91e (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x88d91e)\r\n#16 0x00007ff7dbb2db45 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x88db45)\r\n#17 0x00007ff7dbb2d5b7 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x88d5b7)\r\n#18 0x00007ff7dbafa08d (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x85a08d)\r\n#19 0x00007ff7dbb2a111 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x88a111)\r\n#20 0x00007ff7dbb2dbf4 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x88dbf4)\r\n#21 0x00007ff7dbaf9ea5 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x859ea5)\r\n#22 0x00007ff7db59ff31 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x2fff31)\r\n#23 0x00007ff7db3a6f2d (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x106f2d)\r\n#24 0x00007ff7db3a7a0f (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x107a0f)\r\n#25 0x00007ff7db3a6b84 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x106b84)\r\n#26 0x00007ff7db3a907f (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x10907f)\r\n#27 0x00007ff7db3664fc (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0xc64fc)\r\n#28 0x00007ff7db366169 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0xc6169)\r\n#29 0x00007ff7e0a0c174 (C:\\Library\\Developer\\Toolchains\\unknown-Asserts-development.xctoolchain\\usr\\bin\\swift-frontend.exe+0x576c174)\r\n#30 0x00007fff227d257d (C:\\WINDOWS\\System32\\KERNEL32.DLL+0x1257d)\r\n#31 0x00007fff24acaa58 (C:\\WINDOWS\\SYSTEM32\\ntdll.dll+0x5aa58)\r\n",
"pid" : 40396,
"process" : {
"real_pid" : 40396
}
}: dataCorrupted(Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "kind", intValue: nil)], debugDescription: "invalid kind", underlyingError: nil))
```
### Expected behavior
compilation (this is part of a larger method that reads the parent pid)
### Environment
Swift version 5.9.1 (swift-5.9.1-RELEASE)
Target: x86_64-unknown-windows-msvc
### Additional information
_No response_
compnerd
(Saleem Abdulrasool)
February 9, 2024, 4:47am
2
Could you try with the 5.10 and nightly compilers? It would be useful to know if the issue has been resolved already or not. If it is still an issue, perhaps we can resolve it in time for 5.10.
The issue itself seems to be due to the object layout for PROCESSENTRY32W where potentially alignment differences between C and C++ are mismatched and it is resulting in the assertion failure in the compiler.
CC: @Alex_L @egor.zhdan
I haven't tried a pre-release build... are those available as snapshots/ containers somewhere?
compnerd
(Saleem Abdulrasool)
February 10, 2024, 10:03pm
4
There are some slightly older snapshots that are available on swift.org . You can find more up-to-date releases at GitHub - thebrowsercompany/swift-build: Swift toolchain builds by The Browser Company as well.