Skip to content

Assertion failed: !NodePtr->isKnownSentinel() with boost::intrusive_ptr on Windows #44378

@atnnn

Description

@atnnn
mannequin
Bugzilla Link 45033
Resolution FIXED
Resolved on Mar 02, 2020 02:43
Version trunk
OS Windows NT
Blocks #43900
Attachments Minimal example, Build log, Run script
CC @DougGregor,@zmodem,@zygoloid,@rnk

Extended Description

The following code seems to cause clang and clang-cl, 9.0.0 and trunk, to crash:

intrusive_ptr<C> a;
try {
    a = mk();
    mk();
}
catch (...) {
}

Debug logs show

INSTCOMBINE ITERATION #&#8203;1 on ?crash@@YAXXZ
IC: ADDING: 27 instrs to worklist
IC: Visiting:   %call1 = invoke %struct.C* @"?mk@@YAPEAUC@@XZ"()
          to label %invoke.cont2 unwind label %catch.dispatch
IC: Visiting:   %a.sroa.0.0 = phi i64 [ %0, %invoke.cont2 ], [ 0, %entry ]
IC: Visiting:   %1 = catchswitch within none [label %catch] unwind label %ehcleanup
IC: Visiting:   %2 = catchpad within %1 [i8* null, i32 64, i8* null]
IC: Visiting:   catchret from %2 to label %try.cont
IC: Visiting:   %a.sroa.0.1 = phi i64 [ %0, %invoke.cont2 ], [ %a.sroa.0.0, %catch ]
IC: ADD:   %a.sroa.0.1.ptr = phi %struct.C* 
Assertion failed: !NodePtr->isKnownSentinel(), file C:\src\llvm_package_2663a25f\llvm-project\llvm\include\llvm/ADT/ilist_iterator.h, line 139

I've attached the logs and full trimmed down source.

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillac++

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions