Our app collected some JavaScriptCore crash information on iOS17 and above systems, but the cause of the error cannot be located. The crash stack is as follows:
#27
Heap Helper Thread
SIGSEGV
0 JavaScriptCore JSC::MarkedBlock::aboutToMarkSlow(unsigned int)
1 JavaScriptCore JSC::JSFinalObject::visitChildren(JSC::JSCell*, JSC::SlotVisitor&)
2 JavaScriptCore JSC::JSFinalObject::visitChildren(JSC::JSCell*, JSC::SlotVisitor&)
3 JavaScriptCore JSC::SlotVisitor::drain(***::MonotonicTime)
4 JavaScriptCore JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, ***::MonotonicTime)
5 JavaScriptCore ***::SharedTaskFunctor<void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_15>::run()
6 JavaScriptCore ***::ParallelHelperClient::runTask(***::RefPtr<***::SharedTask<void ()>, ***::RawPtrTraits<***::SharedTask<void ()> >, ***::DefaultRefDerefTraits<***::SharedTask <void ()> > > const&)
7 JavaScriptCore ***::ParallelHelperPool::Thread::work()
8 JavaScriptCore ***::Detail::CallableWrapper<***::AutomaticThread::start(***::AbstractLocker const&)::$_0, void>::call()
9 JavaScriptCore ***::Thread::entryPoint(***::Thread::NewThreadContext*)
10 JavaScriptCore ***::wtfThreadEntryPoint(void*)
11 libsystem_pthread.dylib __pthread_start
#1
Queue: com.apple.main-thread
SIGSEGV
0 libobjc.A.dylib _objc_msgSend
1 UIKitCore -[UIView(Geometry) convertPoint:toView:]
#24
JSC Heap Collector Thread
SIGSEGV
0 libsystem_kernel.dylib ___psynch_cvwait
1 libsystem_pthread.dylib __pthread_cond_wait
2 JavaScriptCore ***::ThreadCondition::timedWait(***::Mutex&, ***::WallTime)
3 JavaScriptCore ***::ParkingLot::parkConditionallyImpl(void const*, ***::ScopedLambda<bool ()> const&, ***::ScopedLambda<void ()> const&, ***::TimeWithDynamicClockType const&)
4 JavaScriptCore bool ***::Condition::waitUntilUncheckedWTF::Lock(***::Lock&, ***::TimeWithDynamicClockType const&)
5 JavaScriptCore JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, ***::MonotonicTime)
6 JavaScriptCore JSC::Heap::runConcurrentPhase(JSC::GCConductor)
7 JavaScriptCore JSC::Heap::runCurrentPhase(JSC::GCConductor, JSC::CurrentThreadState*)
8 JavaScriptCore JSC::Heap::HeapThread::work()
9 JavaScriptCore ***::Detail::CallableWrapper<***::AutomaticThread::start(***::AbstractLocker const&)::$_0, void>::call()
10 JavaScriptCore ***::Thread::entryPoint(***::Thread::NewThreadContext*)
11 JavaScriptCore ***::wtfThreadEntryPoint(void*)
12 libsystem_pthread.dylib __pthread_start
#25
Heap Helper Thread
SIGSEGV
0 libsystem_kernel.dylib ___psynch_cvwait
1 libsystem_pthread.dylib __pthread_cond_wait
2 JavaScriptCore ***::ThreadCondition::timedWait(***::Mutex&, ***::WallTime)
3 JavaScriptCore ***::ParkingLot::parkConditionallyImpl(void const*, ***::ScopedLambda<bool ()> const&, ***::ScopedLambda<void ()> const&, ***::TimeWithDynamicClockType const&)
4 JavaScriptCore bool ***::Condition::waitUntilUncheckedWTF::Lock(***::Lock&, ***::TimeWithDynamicClockType const&)
5 JavaScriptCore JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, ***::MonotonicTime)
6 JavaScriptCore ***::SharedTaskFunctor<void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_15>::run()
7 JavaScriptCore ***::ParallelHelperClient::runTask(***::RefPtr<***::SharedTask<void ()>, ***::RawPtrTraits<***::SharedTask<void ()> >, ***::DefaultRefDerefTraits<***::SharedTask<void ()> > > const&)
8 JavaScriptCore ***::ParallelHelperPool::Thread::work()
9 JavaScriptCore ***::Detail::CallableWrapper<***::AutomaticThread::start(***::AbstractLocker const&)::$_0, void>::call()
10 JavaScriptCore ***::Thread::entryPoint(***::Thread::NewThreadContext*)
11 JavaScriptCore ***::wtfThreadEntryPoint(void*)
12 libsystem_pthread.dylib __pthread_start
#27
Heap Helper Thread
SIGSEGV
0 libsystem_kernel.dylib ___psynch_cvwait
1 libsystem_pthread.dylib __pthread_cond_wait
2 JavaScriptCore ***::ThreadCondition::timedWait(***::Mutex&, ***::WallTime)
3 JavaScriptCore ***::ParkingLot::parkConditionallyImpl(void const*, ***::ScopedLambda<bool ()> const&, ***::ScopedLambda<void ()> const&, ***::TimeWithDynamicClockType const&)
4 JavaScriptCore bool ***::Condition::waitUntilUncheckedWTF::Lock(***::Lock&, ***::TimeWithDynamicClockType const&)
5 JavaScriptCore JSC::SlotVisitor::drainFromShared(JSC::SlotVisitor::SharedDrainMode, ***::MonotonicTime)
6 JavaScriptCore ***::SharedTaskFunctor<void (), JSC::Heap::runBeginPhase(JSC::GCConductor)::$_15>::run()
7 JavaScriptCore ***::ParallelHelperClient::runTask(***::RefPtr<***::SharedTask<void ()>, ***::RawPtrTraits<***::SharedTask<void ()> >, ***::DefaultRefDerefTraits<***::SharedTask<void ()> > > const&)
8 JavaScriptCore ***::ParallelHelperPool::Thread::work()
9 JavaScriptCore ***::Detail::CallableWrapper<***::AutomaticThread::start(***::AbstractLocker const&)::$_0, void>::call()
10 JavaScriptCore ***::Thread::entryPoint(***::Thread::NewThreadContext*)
11 JavaScriptCore ***::wtfThreadEntryPoint(void*)
12 libsystem_pthread.dylib __pthread_start
Please help analyze and locate the cause. Has anyone else encountered this problem?
Post
Replies
Boosts
Views
Activity
We got a problem when we use wkwebview. We use WKWebView to load webpage in our app,but sometimes we found that when the page is loading, JS resources are always in the pending state, resulting in page loading blocking. As long as we reset WKProcessPool, the problem is solved. But it will come back after a while.
We set a singleton object to WKWebview's processpool :
WKWebViewConfiguration* configuration = [WKWebViewConfiguration alloc] init];
configuration.processPool = self.processPool;
WKWebView* webView = [[WKWebView alloc] initWithFrame:self.bounds configuration:configuration];
(WKProcessPool *)processPool {
if (!_processPool) {
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
_processPool = [[WKProcessPool alloc] init];
});
}
return _processPool;
}
Is there any problem that we use processpool as a singleton object ?
what may case js resource requests are always pending ?