https://bugs.kde.org/show_bug.cgi?id=485276
--- Comment #6 from Paul Floyd <pjfl...@wanadoo.fr> --- │ 244 _LIBCPP_INLINE_VISIBILITY │ 245 _LIBCPP_CONSTEXPR_SINCE_CXX20 ~__optional_destruct_base() │ 246 { │ > 247 if (__engaged_) │ 248 __val_.~value_type(); │ 249 } Not sure what is happening. The error occurs as above, but it's not just __engaged_ that is not initialized, this points to an uninitialized object. (gdb) mc xb &__engaged_ sizeof(__engaged_) ff 0x1FFFFFF8F0: 0x60 (gdb) mc xb this sizeof(*this) 00 ff ff ff ff ff ff ff 0x1FFFFFF8E0: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 ff ff ff ff ff ff ff ff 0x1FFFFFF8E8: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 ff ff ff ff ff ff ff ff 0x1FFFFFF8F0: 0x60 0xf9 0xff 0xff 0x1f 0x00 0x00 0x00 type = struct std::__1::__optional_destruct_base<dummy, false> [with _Tp = dummy] { union { char __null_state_; value_type __val_; }; bool __engaged_; public: ~__optional_destruct_base(void); __optional_destruct_base(void); void reset(void); typedef _Tp value_type; } 'this' points to memory on the stack which is why it's safe to dereference. I'm not familiar with the code, but as I understand it, this is the key function: static Bool stmt_is_guardable ( const IRStmt* st ) { switch (st->tag) { // These are easily guarded. case Ist_NoOp: case Ist_IMark: case Ist_Put: case Ist_PutI: return True; // These are definitely not guardable, or at least it's way too much // hassle to do so. case Ist_CAS: case Ist_LLSC: case Ist_MBE: return False; // These could be guarded, with some effort, if really needed, but // currently aren't guardable. case Ist_LoadG: case Ist_Store: case Ist_StoreG: case Ist_Exit: case Ist_Dirty: return False; // This is probably guardable, but it depends on the RHS of the // assignment. case Ist_WrTmp: return expr_is_guardable(st->Ist.WrTmp.data); default: vex_printf("\n"); ppIRStmt(st); vex_printf("\n"); vpanic("stmt_is_guardable: unhandled stmt"); } } -- You are receiving this mail because: You are watching all bug changes.