我的Meteor应用程序出了问题。在每台设备上,它运行良好且速度很快。
当我去iPad(使用模拟器或真实设备)时,它最后会告诉我: “url”上反复出现问题
尝试加载集合时会发生这种情况。该集合有36个文档,每个大约120kb。如果我不加载此集合,则不会发生此问题。由于部分在发布时被删除,因此每个文档(或多或少)实际加载了67KB。
如果删除集合中的5个文档,问题就不会再发生了。
我得到了模拟器的报告说(我只放了相关的行):
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef
Exception Note: EXC_CORPSE_NOTIFY
VM Regions Near 0xbbadbeef:
WebKit Malloc 00000000b0800000-00000000bb800000 [176.0M] rw-/rwx SM=PRV
-->
Stack Guard 00000000bbf09000-00000000bf709000 [ 56.0M] ---/rwx SM=NUL
Application Specific Information:
CoreSimulator 201.3 - Device: iPad 2 - Runtime: iOS 9.2 (13C75) - DeviceType: iPad 2
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.JavaScriptCore 0x04cab966 bmalloc::VMHeap::grow() + 150
1 com.apple.JavaScriptCore 0x04caa8b9 bmalloc::Heap::allocateLarge(std::__1::lock_guard<bmalloc::StaticMutex>&, unsigned long, unsigned long, unsigned long) + 153
2 com.apple.JavaScriptCore 0x04ca7ba6 bmalloc::Allocator::allocate(unsigned long, unsigned long) + 838
3 com.apple.JavaScriptCore 0x04c7cc63 WTF::fastAlignedMalloc(unsigned long, unsigned long) + 51
4 com.apple.JavaScriptCore 0x0477eb5b JSC::CopiedSpace::tryAllocateOversize(unsigned long, void**) + 43
5 com.apple.JavaScriptCore 0x0477eda5 JSC::CopiedSpace::tryReallocateOversize(void**, unsigned long, unsigned long) + 53
6 com.apple.JavaScriptCore 0x0477ece4 JSC::CopiedSpace::tryReallocate(void**, unsigned long, unsigned long) + 132
7 com.apple.JavaScriptCore 0x04a51894 JSC::JSObject::ensureLengthSlow(JSC::VM&, unsigned int) + 228
8 com.apple.JavaScriptCore 0x04a541fc void JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes<(unsigned char)8>(JSC::ExecState*, unsigned int, JSC::JSValue) + 796
9 com.apple.JavaScriptCore 0x04a50d04 JSC::JSObject::putDirectIndexBeyondVectorLength(JSC::ExecState*, unsigned int, JSC::JSValue, unsigned int, JSC::PutDirectIndexMode) + 1012
10 com.apple.JavaScriptCore 0x04ad4dd6 JSC::LiteralParser<unsigned short>::parse(JSC::ParserState) + 4294
11 com.apple.JavaScriptCore 0x04a5cf2b JSC::JSONProtoFuncParse(JSC::ExecState*) + 923
12 ??? 0x8980555d 0 + 2306889053
13 com.apple.JavaScriptCore 0x04aee8e7 llint_entry + 17129
14 com.apple.JavaScriptCore 0x04aee8e7 llint_entry + 17129
15 com.apple.JavaScriptCore 0x04aee8e7 llint_entry + 17129
16 ??? 0x898e6ed1 0 + 2307813073
17 ??? 0x89820479 0 + 2306999417
18 ??? 0x89805717 0 + 2306889495
19 com.apple.JavaScriptCore 0x04aeea8c llint_entry + 17550
20 com.apple.JavaScriptCore 0x04aee8e7 llint_entry + 17129
21 com.apple.JavaScriptCore 0x04aee8e7 llint_entry + 17129
22 com.apple.JavaScriptCore 0x04aee8e7 llint_entry + 17129
23 com.apple.JavaScriptCore 0x04aea477 vmEntryToJavaScript + 253
24 com.apple.JavaScriptCore 0x049b17dc JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 172
25 com.apple.JavaScriptCore 0x04996ca9 JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) + 425
26 com.apple.JavaScriptCore 0x04739fa1 JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&, WTF::NakedPtr<JSC::Exception>&) + 97
27 com.apple.WebCore 0x0579d4df WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) + 911
28 com.apple.WebCore 0x053d8cee WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul, WTF::CrashOnOverflow, 16ul>&) + 814
29 com.apple.WebCore 0x053d88fc WebCore::EventTarget::fireEventListeners(WebCore::Event*) + 268
30 com.apple.WebCore 0x053d87dc WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>) + 92
31 com.apple.WebCore 0x05fcc923 WebCore::WebSocket::didReceiveMessage(WTF::String const&) + 115
32 com.apple.WebCore 0x05fcca3b non-virtual thunk to WebCore::WebSocket::didReceiveMessage(WTF::String const&) + 27
33 com.apple.WebCore 0x05fd1674 WebCore::WebSocketChannel::processFrame() + 5188
34 com.apple.WebCore 0x05fcf95e WebCore::WebSocketChannel::processBuffer() + 94
35 com.apple.WebCore 0x05fcf8d6 WebCore::WebSocketChannel::didReceiveSocketStreamData(WebCore::SocketStreamHandle*, char const*, int) + 374
36 com.apple.WebCore 0x05d93087 WebCore::SocketStreamHandle::readStreamCallback(unsigned long) + 407
37 com.apple.WebCore 0x05d91f8e WebCore::SocketStreamHandle::readStreamCallback(__CFReadStream*, unsigned long, void*) + 30
38 com.apple.CoreFoundation 0x00d16bbd _signalEventSync + 189
39 com.apple.CoreFoundation 0x00d4ea7f _cfstream_shared_signalEventSync + 463
40 com.apple.CoreFoundation 0x00cd46ff __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
41 com.apple.CoreFoundation 0x00cca328 __CFRunLoopDoSources0 + 424
42 com.apple.CoreFoundation 0x00cc97a8 __CFRunLoopRun + 1032
43 com.apple.CoreFoundation 0x00cc90e6 CFRunLoopRunSpecific + 470
44 com.apple.CoreFoundation 0x00cc8efb CFRunLoopRunInMode + 123
45 com.apple.Foundation 0x001c17c2 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 308
46 com.apple.Foundation 0x00267cbf -[NSRunLoop(NSRunLoop) run] + 82
47 libxpc.dylib 0x0252b1b3 _xpc_objc_main + 486
48 libxpc.dylib 0x0252df12 xpc_main + 215
49 com.apple.WebKit.WebContent 0x000f96b3 0xf8000 + 5811
50 libdyld.dylib 0x02263a21 start + 1
这似乎是一个记忆问题,但由于我只订阅了一个集合,我很难看到如何解决这个问题。
编辑:
实际上,重现问题非常简单。
它只需要创建一个内部有虚拟数据的数据库(大小相同)。
生成测试应用程序(我使用iron cli完成),创建集合,在服务器中添加发布,在客户端(在控制器中)订阅,通过iOS2模拟器通过iPad2获取主页,它失败(刚试过自己)。甚至,如果应用程序完全是空的......