Skip to content

Crash in visitPackExpansionExpr, file SILGenExpr.cpp, line 1655 when writing variadically generic zip function #84568

@rvsrvs

Description

@rvsrvs

Description

The following function (which should fail to compile with an error message) crashes the compiler:

func variadicNonCopyingZip<A: ~Copyable, each R>( // escapes, serializes
    _ fs: repeat @escaping (borrowing A, inout each R) -> Void
) -> (borrowing A, inout (repeat each R)) -> Void {
    { a, outputs in
        let pairs = repeat (each fs, each outputs)
        for var pair in repeat each pairs {
            pair.0(a, &pair.1)
        }
    }
}

The crash is:

error: compile command failed due to signal 6 (use -v to see invocation)
Assertion failed: (init && init->canPerformPackExpansionInitialization() && "cannot emit a PackExpansionExpr without an appropriate context"), function visitPackExpansionExpr, file SILGenExpr.cpp, line 1655.
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.

Relevant stack dump:

1.	Apple Swift version 6.2 (swift-6.2-RELEASE)
2.	Compiling with the current language version
3.	While evaluating request ASTLoweringRequest(Lowering AST to SIL for file "...")
4.	While silgen emitFunction SIL function "@$s20Tests21variadicNonCopyingZipyyx_q_q_Qp_tztcyx_q_ztcq_QpRv_Ri_zr0_lF".
 for 'variadicNonCopyingZip(_:)' (at ...:35:1)
5.	While silgen closureexpr SIL function "@$s20Tests21variadicNonCopyingZipyyx_q_q_Qp_tztcyx_q_ztcq_QpRv_Ri_zr0_lFyx_q_q_Qp_tztcfU_".
 for expression at [...:38:5 - line:43:5] RangeText="{ a, outputs in
        let pairs = repeat (each fs, each outputs)
        for var pair in repeat each pairs {
            pair.0(a, &pair.1)
        }
    "
 #0 0x0000000108628f18 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1059dcf18)
 #1 0x0000000108627644 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1059db644)
 #2 0x0000000108629560 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1059dd560)
 #3 0x000000019f036744 (/usr/lib/system/libsystem_platform.dylib+0x1804d6744)
 #4 0x000000019f02c888 (/usr/lib/system/libsystem_pthread.dylib+0x1804cc888)
 #5 0x000000019ef32808 (/usr/lib/system/libsystem_c.dylib+0x1803d2808)
 #6 0x000000019ef31a3c (/usr/lib/system/libsystem_c.dylib+0x1803d1a3c)
 #7 0x0000000108655624 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x105a09624)
 #8 0x000000010352cdb0 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008e0db0)
 #9 0x0000000103519f34 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008cdf34)
#10 0x000000010350656c (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008ba56c)
#11 0x000000010350d4c0 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008c14c0)
#12 0x00000001035ae9d8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1009629d8)
#13 0x00000001035ad9b8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1009619b8)
#14 0x0000000103542924 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008f6924)
#15 0x00000001034a9410 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10085d410)
#16 0x00000001034b17d8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008657d8)
#17 0x0000000103d0c870 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1010c0870)
#18 0x00000001034ac2c0 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008602c0)
#19 0x00000001035375e8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008eb5e8)
#20 0x0000000103537254 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008eb254)
#21 0x000000010351a080 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008ce080)
#22 0x00000001035b10b8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1009650b8)
#23 0x00000001035af32c (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10096332c)
#24 0x00000001035aeaac (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100962aac)
#25 0x00000001035ad9b8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1009619b8)
#26 0x00000001035426f0 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008f66f0)
#27 0x00000001034aa264 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10085e264)
#28 0x00000001034ab304 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10085f304)
#29 0x00000001034a8a8c (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10085ca8c)
#30 0x00000001034adadc (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100861adc)
#31 0x00000001034adff8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100861ff8)
#32 0x00000001035ad394 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100961394)
#33 0x00000001034b1fd8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100865fd8)
#34 0x00000001034ae614 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100862614)
#35 0x0000000102ee05d8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1002945d8)
#36 0x0000000102eecdc8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1002a0dc8)
#37 0x0000000102ee23fc (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1002963fc)
#38 0x0000000102ee1bb8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100295bb8)
#39 0x0000000102c856b4 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1000396b4)
#40 0x000000019ec6dd54 

Reproduction

func variadicNonCopyingZip<A: ~Copyable, each R>( // escapes, serializes
    _ fs: repeat @escaping (borrowing A, inout each R) -> Void
) -> (borrowing A, inout (repeat each R)) -> Void {
    { a, outputs in
        let pairs = repeat (each fs, each outputs)
        for var pair in repeat each pairs {
            pair.0(a, &pair.1)
        }
    }
}

Stack dump

#0 0x0000000108628f18 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1059dcf18)
 #1 0x0000000108627644 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1059db644)
 #2 0x0000000108629560 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1059dd560)
 #3 0x000000019f036744 (/usr/lib/system/libsystem_platform.dylib+0x1804d6744)
 #4 0x000000019f02c888 (/usr/lib/system/libsystem_pthread.dylib+0x1804cc888)
 #5 0x000000019ef32808 (/usr/lib/system/libsystem_c.dylib+0x1803d2808)
 #6 0x000000019ef31a3c (/usr/lib/system/libsystem_c.dylib+0x1803d1a3c)
 #7 0x0000000108655624 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x105a09624)
 #8 0x000000010352cdb0 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008e0db0)
 #9 0x0000000103519f34 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008cdf34)
#10 0x000000010350656c (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008ba56c)
#11 0x000000010350d4c0 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008c14c0)
#12 0x00000001035ae9d8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1009629d8)
#13 0x00000001035ad9b8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1009619b8)
#14 0x0000000103542924 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008f6924)
#15 0x00000001034a9410 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10085d410)
#16 0x00000001034b17d8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008657d8)
#17 0x0000000103d0c870 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1010c0870)
#18 0x00000001034ac2c0 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008602c0)
#19 0x00000001035375e8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008eb5e8)
#20 0x0000000103537254 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008eb254)
#21 0x000000010351a080 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008ce080)
#22 0x00000001035b10b8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1009650b8)
#23 0x00000001035af32c (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10096332c)
#24 0x00000001035aeaac (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100962aac)
#25 0x00000001035ad9b8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1009619b8)
#26 0x00000001035426f0 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1008f66f0)
#27 0x00000001034aa264 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10085e264)
#28 0x00000001034ab304 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10085f304)
#29 0x00000001034a8a8c (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x10085ca8c)
#30 0x00000001034adadc (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100861adc)
#31 0x00000001034adff8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100861ff8)
#32 0x00000001035ad394 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100961394)
#33 0x00000001034b1fd8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100865fd8)
#34 0x00000001034ae614 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100862614)
#35 0x0000000102ee05d8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1002945d8)
#36 0x0000000102eecdc8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1002a0dc8)
#37 0x0000000102ee23fc (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1002963fc)
#38 0x0000000102ee1bb8 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x100295bb8)
#39 0x0000000102c856b4 (Library/Developer/Toolchains/swift-6.2-RELEASE.xctoolchain/usr/bin/swift-frontend+0x1000396b4)
#40 0x000000019ec6dd54

Expected behavior

should provide an error message and not crash

Environment

Apple Swift version 6.2 (swift-6.2-RELEASE)
Target: arm64-apple-macosx26.0
Build config: +assertions

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.crashBug: A crash, i.e., an abnormal termination of softwaretriage neededThis issue needs more specific labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions