Details
-
Bug
-
Resolution: Duplicate
-
P1: Critical
-
5.12.0 RC2
Description
Regex JIT crashes to "INTEGRITY violation - attempt to store into protected memory" when trying to replace a string. Problem I think comes Alloca wrapper we have in Integrity. Assembly assumes it can write to stack but because we don't have dynamic stack the alloca has been implemented as heap based item i.e. the offset is wrong, maybe I'm misinterpreting as well. Easy fix is to disable regex JIT.
0x3fbcffc: 00000000 <disassembly unavailable> 0x3fbd000: d3407c21 uxtw x1, w1 ; regex JIT starts here 0x3fbd004: d3407c42 uxtw x2, w2 0x3fbd008: 320003f0 movi w16, #0x1 0x3fbd00c: d29ff491 movz x17, #0xffa4 0x3fbd010: f2a08471 movk x17, #0x423, lsl #16 0x3fbd014: 39000230 strb w16, [x17] 0x3fbd018: 6b02003f cmp w1, w2 0x3fbd01c: 540000e9 b.ls .+28 (0x3fbd038) 0x3fbd020: 92800000 movn x0, #0 0x3fbd024: 52800001 movz w1, #0 0x3fbd028: d29ff491 movz x17, #0xffa4 0x3fbd02c: f2a08471 movk x17, #0x423, lsl #16 0x3fbd030: 3900023f strb wzr, [x17] 0x3fbd034: d65f03c0 ret 0x3fbd038: 12800010 movn w16, #0 0x3fbd03c: b8000070 stur w16, [x3] ; crash here 0 0x3fbd03c(0, 0x183a334, 0, 0x40000b0, 0, 0x5801730) 1 QV4::RegExp::match(struct QV4::RegExp *const this=0x4e5dee0, const struct QString string={...}, int start=-268435456, unsigned int *matchOffsets=0x9) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4regexp.cpp:69,11] 2 QV4::StringPrototype::method_replace(const struct QV4::FunctionObject *b=0x5801718, const struct QV4::Value *thisObject=0x5801698, const struct QV4::Value *argv=0x58016c0, int argc=2) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4stringobject.cpp:794,34] 3 QV4::FunctionObject::call(const struct QV4::FunctionObject *const this=0x5801718, const struct QV4::Value *thisObject=0x5801698, const struct QV4::Value *argv=0x58016c0, int argc=2) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h:202,4] 4 QV4::Runtime::method_callProperty(struct QV4::ExecutionEngine *engine=0x423ff90, struct QV4::Value *base=0x5801698, int nameIndex=7, struct QV4::Value *argv=0x58016c0, int argc=2) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1385,36] 5 QV4::Moth::VME::interpret(struct QV4::CppStackFrame *frame=0x3d56b68, struct QV4::ExecutionEngine *engine=0x423ff90, const char *code=0x4dd8256) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:718,269] 6 QV4::Moth::VME::exec(struct QV4::CppStackFrame *frame=0x3d56b68, struct QV4::ExecutionEngine *engine=0x423ff90) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:441,26] 7 QV4::ArrowFunction::virtualCall(const struct QV4::FunctionObject *fo=0x5801660, const struct QV4::Value *thisObject=0x5801650, const struct QV4::Value *argv=0x5801610, int argc=2) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4functionobject.cpp:513,16] 8 QV4::FunctionObject::call(const struct QV4::FunctionObject *const this=0x5801660, const struct QV4::Value *thisObject=0x5801650, const struct QV4::Value *argv=0x5801610, int argc=2) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h:202,4] 9 QV4::Runtime::method_callName(struct QV4::ExecutionEngine *engine=0x423ff90, int nameIndex=3, struct QV4::Value *argv=0x5801610, int argc=2) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1346,21] 10 QV4::Moth::VME::interpret(struct QV4::CppStackFrame *frame=0x3d57f38, struct QV4::ExecutionEngine *engine=0x423ff90, const char *code=0x4dd82a7) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:745,296] 11 QV4::Moth::VME::exec(struct QV4::CppStackFrame *frame=0x3d57f38, struct QV4::ExecutionEngine *engine=0x423ff90) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:441,26] 12 QV4::ArrowFunction::virtualCall(const struct QV4::FunctionObject *fo=0x58015b8, const struct QV4::Value *thisObject=0x5801558, const struct QV4::Value *argv=0x5801570, int argc=1) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4functionobject.cpp:513,16] 13 QV4::FunctionObject::call(const struct QV4::FunctionObject *const this=0x58015b8, const struct QV4::Value *thisObject=0x5801558, const struct QV4::Value *argv=0x5801570, int argc=1) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h:202,4] 14 QV4::Runtime::method_callProperty(struct QV4::ExecutionEngine *engine=0x423ff90, struct QV4::Value *base=0x5801558, int nameIndex=108, struct QV4::Value *argv=0x5801570, int argc=1) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1385,36] 15 QV4::Moth::VME::interpret(struct QV4::CppStackFrame *frame=0x3d59378, struct QV4::ExecutionEngine *engine=0x423ff90, const char *code=0x4f6ced3) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:718,269] 16 QV4::Moth::VME::exec(struct QV4::CppStackFrame *frame=0x3d59378, struct QV4::ExecutionEngine *engine=0x423ff90) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4vme_moth.cpp:441,26] 17 QV4::Function::call(struct QV4::Function *const this=0x4f88e80, const struct QV4::Value *thisObject=0x58014f8, const struct QV4::Value *argv=0x5801510, int argc=0, const struct QV4::ExecutionContext *context=0x3fc1420) [/home/qt3d/512/qtdeclarative/src/qml/jsruntime/qv4function.cpp:68,12] 18 QQmlJavaScriptExpression::evaluate(struct QQmlJavaScriptExpression *const this=0x4f90590, struct QV4::CallData *callData=0x58014e0, bool *isUndefined=0x3d59677) [/home/qt3d/512/qtdeclarative/src/qml/qml/qqmljavascriptexpression.cpp:216,36] 19 QQmlBinding::evaluate(struct QQmlBinding *const this=0x4f90590, bool *isUndefined=0x3d59677) [/home/qt3d/512/qtdeclarative/src/qml/qml/qqmlbinding.cpp:209,18] Status pc 0x0000000003fbd03c pstate 0x00000000 General r0 0x0000000003d533b0 r1 0x0000000004e973d8 r2 0x00000000f0000000 r3 0x0000000000000009 r4 0x0000000003d55698 r5 0x0000000003d53430 r6 0x0000000000002000 r7 0x0000000000002000 r8 0x0000000003fbd000 r9 0x0000000003fbd000 r10 0x0000000003fbd000 r11 0x0000000000000008 r12 0x0000000000000000 r13 0x0000000000000001 r14 0x0000000000000000 r15 0x0000000000000000 r16 0x00000000ffffffff r17 0x000000000423ffa4 r18 0x0000000003ef0000 r19 0x0000000003d53420 r20 0x0000000004e5dee0 r21 0x0000000004e973d8 r22 0x00000000f0000000 r23 0x0000000000000009 r24 0x0000000003d55698 r25 0x0000000003d53430 r26 0x0000000000002000 r27 0x0000000000000040 r28 0x00000000f0000000 r29 0x0000000003d53350 r30 0x0000000001840dc0 sp 0x0000000003d53350
Attachments
Issue Links
- is required for
-
QT3DS-2893 Integrity issues for Qt3DS 2.3
- Closed
- relates to
-
QTBUG-73865 Scene2d example crashes on Integrity
- Reported
- resulted from
-
QT3DS-3308 Support customer project X
- In Progress