1.7.0正式版,1.8.0正式版,1.7.2beta2都会在IOS中频繁闪退,Android中却没事

任何有关 JS VM 的包含context接口都不能调用。大部分接口都包含context的。

你反馈的 setPrivateData 触发assert 的确会有问题,这块我考虑一下如何修复更合理。

前面加了se::AutoHandleScope hs;也不可以的吗?

跟HandleScope没关系。

1赞

解决了

https://github.com/cocos-creator/cocos2d-x-lite/pull/1075

并更新了文档内容。

1赞

赞!

有个疑问,在native对象释放后,seobj回收之前,seobj里仍然保留了native对象的指针(野指针),如果js代码恰好在这期间访问了这个对象,会不会crash?

最新1.8.1的安卓有内存泄漏啊,估计是龙骨这块,玩一会儿必定闪退

+1 闪退 卡顿一直存在

@dumganhar ios crash的问题解决了吗? (除了上面clearPrivateData的问题,应该还有别的问题)

嗯,应该。我没继续收到类似反馈。
有问题的可以整理复现方式,我这里会查。

请查收下qq附件 发了一个毕现的崩溃demo
release包 毕现, debug包不崩溃
ios 系统是10.2.1 ipad
xcode:9.2
demo是个jsb-default ios工程
用release的配置Run 就会崩溃

JavaScriptCore	JSObjectCallAsFunction + 308
1 JavaScriptCore	JSObjectCallAsFunction + 68
2 WinningSlots-mobile	__cxa_throw + 484992
3 WinningSlots-mobile	__cxa_throw + 491524
4 WinningSlots-mobile	__cxa_throw + 2045808
5 WinningSlots-mobile	__cxa_throw + 2487704
6 WinningSlots-mobile	__cxa_throw + 2572008
7 WinningSlots-mobile	__cxa_throw + 1037144
8 JavaScriptCore	long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::ExecState*) + 416
9 JavaScriptCore	JSC::LLInt::setUpCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*) + 480
10 JavaScriptCore	_llint_entry + 24744
11 JavaScriptCore	_vmEntryToJavaScript + 264
12 JavaScriptCore	JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 168
13 JavaScriptCore	JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 352
14 JavaScriptCore	JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 160
15 JavaScriptCore	JSObjectCallAsFunction + 536
16 WinningSlots-mobile	__cxa_throw + 484992
17 WinningSlots-mobile	__cxa_throw + 1516060
18 JavaScriptCore	long long JSC::APICallbackFunction::call<JSC::JSCallbackFunction>(JSC::ExecState*) + 416
19 JavaScriptCore	JSC::LLInt::setUpCall(JSC::ExecState*, JSC::Instruction*, JSC::CodeSpecializationKind, JSC::JSValue, JSC::LLIntCallLinkInfo*) + 480
20 JavaScriptCore	_llint_entry + 24744
21 JavaScriptCore	_llint_entry + 25580
22 JavaScriptCore	_llint_entry + 24660
23 JavaScriptCore	_llint_entry + 25848
24 JavaScriptCore	_llint_entry + 24760
25 JavaScriptCore	_llint_entry + 24760
26 JavaScriptCore	_llint_entry + 24660
27 JavaScriptCore	_llint_entry + 24660
28 JavaScriptCore	_llint_entry + 24660
29 JavaScriptCore	_llint_entry + 24660
30 JavaScriptCore	_vmEntryToJavaScript + 264
31 JavaScriptCore	JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 168
32 JavaScriptCore	JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 352
33 JavaScriptCore	JSC::callSetter(JSC::ExecState*, JSC::JSValue, JSC::JSValue, JSC::JSValue, JSC::ECMAMode) + 320
34 JavaScriptCore	JSC::JSObject::putInlineSlow(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) + 2240
35 JavaScriptCore	_llint_slow_path_put_by_id + 908
36 JavaScriptCore	_llint_entry + 11576
37 JavaScriptCore	_llint_entry + 24760
38 JavaScriptCore	_llint_entry + 24760
39 JavaScriptCore	_llint_entry + 24760
40 JavaScriptCore	_llint_entry + 24760
41 JavaScriptCore	_llint_entry + 24660
42 JavaScriptCore	_llint_entry + 24660
43 JavaScriptCore	_vmEntryToJavaScript + 264
44 JavaScriptCore	JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 168
45 JavaScriptCore	JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 352
46 JavaScriptCore	JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 160
47 JavaScriptCore	JSObjectCallAsFunction + 536
48 WinningSlots-mobile	__cxa_throw + 484992
49 WinningSlots-mobile	__cxa_throw + 540888
50 WinningSlots-mobile	__cxa_throw + 3068816
51 WinningSlots-mobile	__cxa_throw + 3098984
52 WinningSlots-mobile	__cxa_throw + 3098824
53 WinningSlots-mobile	__cxa_throw + 3082372
54 WinningSlots-mobile	__cxa_throw + 3082268
55 WinningSlots-mobile	__cxa_throw + 3082628
56 WinningSlots-mobile	__cxa_throw + 2393456
57 WinningSlots-mobile	__cxa_throw + 2400908
58 QuartzCore	CA::Display::DisplayLinkItem::dispatch(unsigned long long) + 44
59 QuartzCore	CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 444
60 IOKit	IODispatchCalloutFromCFMessage + 372
61 CoreFoundation	___CFMachPortPerform + 180
62 CoreFoundation	___CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
63 CoreFoundation	___CFRunLoopDoSource1 + 436
64 CoreFoundation	___CFRunLoopRun + 1840
65 CoreFoundation	CFRunLoopRunSpecific + 444
66 GraphicsServices	GSEventRunModal + 180
67 UIKit	-[UIApplication _run] + 684
68 UIKit	UIApplicationMain + 208
69 WinningSlots-mobile	0x0000000100058000 + 50760
70 libdyld.dylib	_start + 4
JavaScriptCore	_llint_slow_path_jfalse + 352
1 JavaScriptCore	_llint_slow_path_jfalse + 52
2 JavaScriptCore	_llint_entry + 23928
3 JavaScriptCore	_llint_entry + 26912
4 JavaScriptCore	_llint_entry + 26912
5 JavaScriptCore	_llint_entry + 26912
6 JavaScriptCore	_llint_entry + 26912
7 JavaScriptCore	_llint_entry + 26912
8 JavaScriptCore	_vmEntryToJavaScript + 272
9 JavaScriptCore	JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 184
10 JavaScriptCore	JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 400
11 JavaScriptCore	JSC::callSetter(JSC::ExecState*, JSC::JSValue, JSC::JSValue, JSC::JSValue, JSC::ECMAMode) + 280
12 JavaScriptCore	JSC::JSObject::putInlineSlow(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) + 920
13 JavaScriptCore	_llint_slow_path_put_by_id + 880
14 JavaScriptCore	_llint_entry + 12112
15 JavaScriptCore	_llint_entry + 26912
16 JavaScriptCore	_llint_entry + 26912
17 JavaScriptCore	_llint_entry + 27012
18 JavaScriptCore	_llint_entry + 27012
19 JavaScriptCore	_llint_entry + 26912
20 JavaScriptCore	_llint_entry + 26912
21 JavaScriptCore	_vmEntryToJavaScript + 272
22 JavaScriptCore	JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 184
23 JavaScriptCore	JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 400
24 JavaScriptCore	JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 168
25 JavaScriptCore	JSObjectCallAsFunction + 392
26 WinningSlots-mobile	__cxa_throw + 484992
27 WinningSlots-mobile	__cxa_throw + 540888
28 WinningSlots-mobile	__cxa_throw + 3068816
29 WinningSlots-mobile	__cxa_throw + 3098984
30 WinningSlots-mobile	__cxa_throw + 3098824
31 WinningSlots-mobile	__cxa_throw + 3082372
32 WinningSlots-mobile	__cxa_throw + 3082268
33 WinningSlots-mobile	__cxa_throw + 3082628
34 WinningSlots-mobile	__cxa_throw + 2393456
35 WinningSlots-mobile	__cxa_throw + 2400908
36 QuartzCore	CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 672
37 IOKit	IODispatchCalloutFromCFMessage + 392
38 CoreFoundation	___CFMachPortPerform + 188
39 CoreFoundation	___CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 56
40 CoreFoundation	___CFRunLoopDoSource1 + 440
41 CoreFoundation	___CFRunLoopRun + 2196
42 CoreFoundation	CFRunLoopRunSpecific + 436
43 GraphicsServices	GSEventRunModal + 100
44 UIKit	UIApplicationMain + 236
45 WinningSlots-mobile	0x0000000102320000 + 50760
46 libdyld.dylib	_start + 4

这几个崩溃概率挺高的,在ios上收到了几百个这些崩溃日志。。。具体原因不知道,出现位置也不是必现的,连着手机的时候崩溃过,但都崩在jsc的汇编上了,没有源代码调试。@dumganhar

现在解决了 项目在ios 10.2.1设备 release包必崩溃的问题
如果 jsb里面的接口 如果是 size_t* 类型的 对应的也传 size_t类型的变量地址.
不要用强转(size_t *)


我在c++里面 调用这个接口时候将一个 unsigned int 类型 强转成了 size_t类型 传进去了
debug低概率崩溃 release 必崩溃.

请问大大,这个问题,在1.8.1中解决了吗?
目前我们使用的1.7.2,也是ios频繁闪退,很蛋疼啊,求解救。

1赞

能否提供更多的信息协助我们查询问题?
比如给个demo。

Process: Simulator [2485]
Path: /sango/*/Simulator.app/Contents/MacOS/Simulator
Identifier: com.cocos.apps.simulator
Version: 20180201
Code Type: X86-64 (Native)
Parent Process: CocosCreator [684]
Responsible: Simulator [2485]
User ID: 501

Date/Time: 2018-02-01 23:30:12.083 +0800
OS Version: Mac OS X 10.13.3 (17D47)
Report Version: 12
Anonymous UUID: 6C320580-FBC4-A769-E039-3503B3AA33E9

Time Awake Since Boot: 1800 seconds

System Integrity Protection: disabled

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000000000f265
Exception Note: EXC_CORPSE_NOTIFY

Termination Signal: Segmentation fault: 11
Termination Reason: Namespace SIGNAL, Code 0xb
Terminating Process: exc handler [0]

VM Regions Near 0xf265:
–>
Kernel Alloc Once 000000000e2f9000-000000000e2fb000 [ 8K] rw-/rwx SM=PRV

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.JavaScriptCore 0x00007fff356da6aa operationGetById + 2330
1 ??? 0x0000204f0452cb82 0 + 35523747040130
2 com.apple.JavaScriptCore 0x00007fff35ea1920 vmEntryToJavaScript + 304
3 com.apple.JavaScriptCore 0x00007fff35d78e43 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 147
4 com.apple.JavaScriptCore 0x00007fff3560cc71 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 433
5 com.apple.JavaScriptCore 0x00007fff3594df92 JSC::profiledCall(JSC::ExecState*, JSC::ProfilingReason, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 178
6 com.apple.JavaScriptCore 0x00007fff3560c9b1 JSObjectCallAsFunction + 481
7 com.cocos.apps.simulator 0x000000010e32ec76 se::Object::call(std::__1::vector<se::Value, std::__1::allocatorse::Value > const&, se::Object*, se::Value*) + 294
8 com.cocos.apps.simulator 0x000000010e33398c se::Object::attachObject(se::Object*) + 1692
9 com.cocos.apps.simulator 0x000000010e510dc4 ScriptingCore::retainScriptObject(cocos2d::Ref*, cocos2d::Ref*) + 852
10 com.cocos.apps.simulator 0x000000010eb254aa cocos2d::Node::insertChild(cocos2d::Node*, int) + 90
11 com.cocos.apps.simulator 0x000000010eb24e62 cocos2d::Node::addChildHelper(cocos2d::Node*, int, int, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, bool) + 146
12 com.cocos.apps.simulator 0x000000010eb2500c cocos2d::Node::addChild(cocos2d::Node*, int, std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&) + 316
13 com.cocos.apps.simulator 0x000000010eb2554c cocos2d::Node::addChild(cocos2d::Node*, int) + 92
14 com.cocos.apps.simulator 0x000000010f025d26 dragonBones::CCSlot::_replaceDisplay(void*, bool) + 326
15 com.cocos.apps.simulator 0x000000010ee7b8f2 dragonBones::Slot::_updateDisplay() + 578
16 com.cocos.apps.simulator 0x000000010ee7d0c1 dragonBones::Slot::_update(int) + 65
17 com.cocos.apps.simulator 0x000000010ea6c371 dragonBones::Armature::advanceTime(float) + 1201
18 com.cocos.apps.simulator 0x000000010ee8332a dragonBones::CCArmatureDisplay::update(float) + 42
19 com.cocos.apps.simulator 0x000000010eb6bc49 void cocos2d::Scheduler::scheduleUpdatecocos2d::Node(cocos2d::Node*, int, bool)::‘lambda’(float)::operator()(float) const + 41

麻烦看下报错,是龙骨这块的问题,用的最新1.8引擎

能否提供一个复现demo给我们查一下?

项目比较大,方便用teamview看一下吗

不太方便,这种问题不是一次就麻烦看出来什么问题的。

我们在1.7正式版,这个崩溃还在,升级哪个版本可以解决?

要升级,就升级到最新的稳定版吧。
这个问题有在 1.8.2 及之后的版本中修复。