Closed mzbik closed 9 years ago
Cannot reproduce. It never increases CPU load for me while idle. Only when Showing/hiding terminal animation.
Repoduced on two other machines, today. 10.10.3. Removed all traces of Atom. Installed latest. Installed termrk. Opened terminal window. CPU to 130%.
Let me know how I can help debug this.
Investigation:
Date/Time: 2015-06-05 14:29:42.685 -0700 OS Version: Mac OS X 10.10.3 (14D136) Report Version: 7
Call graph: 2526 Thread_6456152 DispatchQueue_1: com.apple.main-thread (serial)
Total number in stack (recursive counted multiple, when >=5): 74 OSAtomicCompareAndSwapPtrBarrier$VARIANT$mp (in libsystem_platform.dylib) + 0 [0x7fff8cb77340] 32 pthread_mutex_unlock (in libsystem_pthread.dylib) + 63 [0x7fff882e5b4e] 29 mtx_droplock (in libsystem_pthread.dylib) + 0 [0x7fff882e5c06] 26 _pthread_mutex_lock (in libsystem_pthread.dylib) + 0 [0x7fff882e55aa] 15 psynch_mutexwait (in libsystem_kernel.dylib) + 0 [0x7fff91cd615c] 15 _pthread_body (in libsystem_pthread.dylib) + 131 [0x7fff882e7268] 15 _pthread_start (in libsystem_pthread.dylib) + 176 [0x7fff882e71e5] 15 thread_start (in libsystem_pthread.dylib) + 13 [0x7fff882e541d] 14 pthread_mutex_unlock (in libsystempthread.dylib) + 0 [0x7fff882e5b0f] 12 blink::WebSubstringUtil::attributedSubstringInRange(blink::WebLocalFrame, unsigned long, unsigned long) (in libchromiumcontent.dylib) + 0 [0x106101480] 11 psynch_mutexdrop (in libsystem_kernel.dylib) + 0 [0x7fff91cd6144] 11 base::subtle::RefCountedThreadSafeBase::AddRef() const (in libchromiumcontent.dylib) + 0 [0x1046e6320] 11 base::subtle::RefCountedThreadSafeBase::Release() const (in libchromiumcontent.dylib) + 0 [0x1046e6330] 11 pthread_mutex_lock (in libsystem_pthread.dylib) + 0 [0x7fff882e55a3] 9 _os_lock_spin_lock (in libsystem_platform.dylib) + 0 [0x7fff8cb78cc5] 9 mach_absolute_time (in libsystem_kernel.dylib) + 0 [0x7fff91cd05ce] 9 objc_msgSend (in libobjc.A.dylib) + 0 [0x7fff8a4120c0] 8 psynch_cvwait (in libsystem_kernel.dylib) + 0 [0x7fff91cd612c] 7 CFRelease (in CoreFoundation) + 0 [0x7fff834a9c80] 7 CFStringHash (in CoreFoundation) + 0 [0x7fff834a2800] 7 base::EnableTerminationOnOutOfMemory() (in libchromiumcontent.dylib) + 0 [0x1046fd400] 7 base::EnableTerminationOnOutOfMemory() (in libchromiumcontent.dylib) + 3328 [0x1046fe100] 7 base::MessagePumpLibevent::OnWakeup(int, short, void_) (in libchromiumcontent.dylib) + 0 [0x1046969c0] 7 base::PlatformThread::Join(base::PlatformThreadHandle) (in libchromiumcontent.dylib) + 283 [0x10471e19b] 7 mach_msg_trap (in libsystem_kernel.dylib) + 0 [0x7fff91cd14d4] 7 malloc_zone_malloc (in libsystem_malloc.dylib) + 71 [0x7fff92ba1877] 7 szone_malloc_should_clear (in libsystem_malloc.dylib) + 116 [0x7fff92ba1e87] 6 CFEqual (in CoreFoundation) + 0 [0x7fff834af820] 6 CFHash (in CoreFoundation) + 0 [0x7fff834a26b0] 6 base::TimeTicks::Now() (in libchromiumcontent.dylib) + 0 [0x104727d50] 6 base::internal::WeakReference::is_valid() const (in libchromiumcontent.dylib) + 0 [0x1046e7fb0] 6 mach_msg (in libsystem_kernel.dylib) + 55 [0x7fff91cd064f] 6 malloc (in libsystem_malloc.dylib) + 42 [0x7fff92ba0395] 6 szone_malloc_should_clear (in libsystem_malloc.dylib) + 0 [0x7fff92ba1e13] 6 szone_malloc_should_clear (in libsystem_malloc.dylib) + 317 [0x7fff92ba1f50] 6 tiny_malloc_from_free_list (in libsystem_malloc.dylib) + 0 [0x7fff92ba2f94] 6 uvthread_start (in Atom Framework) + 25 [0x103fc0e65] 5 CFRetain (in CoreFoundation) + 0 [0x7fff83497500] 5 _CFRetain (in CoreFoundation) + 0 [0x7fff834975d0] 5 base::MessageLoop::Run() (in libchromiumcontent.dylib) + 29 [0x1046ea8dd] 5 base::RunLoop::Run() (in libchromiumcontent.dylib) + 99 [0x104701103] 5 base::TimeTicks::Now() (in libchromiumcontent.dylib) + 30 [0x104727d6e] 5 malloc (in libsystem_malloc.dylib) + 0 [0x7fff92ba036b] 5 operator new(unsigned long) (in libc++.1.dylib) + 30 [0x7fff8687f43e] 5 szone_free_definite_size (in libsystem_malloc.dylib) + 0 [0x7fff92ba4b7f]
Sort by top of stack, same collapsed (when >= 5): psynch_cvwait (in libsystem_kernel.dylib) 20208 mach_msg_trap (in libsystem_kernel.dylib) 7714 kevent (in libsystem_kernel.dylib) 5295 semaphore_wait_trap (in libsystem_kernel.dylib) 4106 kevent64 (in libsystem_kernel.dylib) 2526 psynch_mutexwait (in libsystem_kernel.dylib) 620 psynch_mutexdrop (in libsystem_kernel.dylib) 336 OSAtomicCompareAndSwapPtrBarrier$VARIANT$mp (in libsystem_platform.dylib) 156 _kernelrpc_mach_port_insert_member_trap (in libsystem_kernel.dylib) 92 _kernelrpc_mach_port_extract_member_trap (in libsystem_kernel.dylib) 88 semaphore_signal_trap (in libsystem_kernel.dylib) 85 _pthread_mutex_lock (in libsystem_pthread.dylib) 83 mtx_droplock (in libsystempthread.dylib) 70 blink::WebSubstringUtil::attributedSubstringInRange(blink::WebLocalFrame, unsigned long, unsigned long) (in libchromiumcontent.dylib) 60 objc_msgSend (in libobjc.A.dylib) 51 CFStringHash (in CoreFoundation) 45 CFRunLoopRun (in CoreFoundation) 36 mach_absolute_time (in libsystem_kernel.dylib) 33 CFRunLoopDoObservers (in CoreFoundation) 30 _os_lock_spin_lock (in libsystemplatform.dylib) 30 CFBasicHashFindBucket (in CoreFoundation) 29 base::MessagePumpLibevent::OnWakeup(int, short, void) (in libchromiumcontent.dylib) 27 malloc (in libsystem_malloc.dylib) 26 tiny_malloc_from_free_list (in libsystem_malloc.dylib) 26 base::subtle::RefCountedThreadSafeBase::AddRef() const (in libchromiumcontent.dylib) 25 pthread_mutex_unlock (in libsystem_pthread.dylib) 25 szone_free_definite_size (in libsystem_malloc.dylib) 23 CFBasicHashGetCountOfKey (in CoreFoundation) 22 CFRelease (in CoreFoundation) 22 mk_timer_arm (in libsystem_kernel.dylib) 22 szone_malloc_should_clear (in libsystem_malloc.dylib) 21 base::MessageLoop::RunTask(base::PendingTask const&) (in libchromiumcontent.dylib) 20 szone_size (in libsystem_malloc.dylib) 20 szone_free (in libsystemmalloc.dylib) 19 (anonymous namespace)::AutoreleasePoolPage::pop(void) (in libobjc.A.dylib) 18 CFArrayGetValueAtIndex (in CoreFoundation) 18 CFHash (in CoreFoundation) 18 base::subtle::RefCountedThreadSafeBase::Release() const (in libchromiumcontent.dylib) 17 blink::WebDatabase::closeDatabaseImmediately(blink::WebString const&, blink::WebString const&) (in libchromiumcontent.dylib) 16 base::EnableTerminationOnOutOfMemory() (in libchromiumcontent.dylib) 15 os_lock_lock (in libsystem_platform.dylib) 14 -[NSArrayM objectAtIndex:](in CoreFoundation) 13 CA::Transaction::observer_callback(CFRunLoopObserver, unsigned long, void) (in QuartzCore) 13 CFBasicHashGetBucket (in CoreFoundation) 13 CFEqual (in CoreFoundation) 13 CFRunLoopFindMode (in CoreFoundation) 13 operator new(unsigned long) (in libc++.1.dylib) 13 pthread_mutex_lock (in libsystem_pthread.dylib) 13 base::TimeTicks::Now() (in libchromiumcontent.dylib) 12 -[NSRunLoop(NSRunLoop) runMode:beforeDate:](in Foundation) 11 base::internal::WeakReference::is_valid() const (in libchromiumcontent.dylib) 11 tiny_free_list_add_ptr (in libsystem_malloc.dylib) 11 uvio_poll (in Atom Framework) 11 CFArrayGetCount (in CoreFoundation) 10 CFRunLoopTimerSetNextFireDate (in CoreFoundation) 10 _CFGetTSD (in CoreFoundation) 10 _CFRuntimeSetInstanceTypeIDAndIsa (in CoreFoundation) 10 tracked_objects::ThreadData::TallyADeath(tracked_objects::Births const&, int, tracked_objects::TaskStopwatch const&) (in libchromiumcontent.dylib) 10 uv_sem_wait (in Atom Framework) 10 -[NSAutoreleasePool drain](in Foundation) 9 CFRetain (in CoreFoundation) 8 CFSetGetValue (in CoreFoundation) 8 _CFRuntimeSetInstanceTypeID (in CoreFoundation) 8 CFRunLoopDoSources0 (in CoreFoundation) 8 commpage_gettimeofday (in libsystemkernel.dylib) 8 base::MessagePumpNSRunLoop::DoRun(base::MessagePump::Delegate) (in libchromiumcontent.dylib) 8 get_tiny_previous_free_msize (in libsystem_malloc.dylib) 8 object_setClass (in libobjc.A.dylib) 8 pthread_main_np (in libsystempthread.dylib) 8 CFRunLoopRunSpecific (in CoreFoundation) 7 CFSetApplyFunction (in CoreFoundation) 7 CFStringGetCStringPtr (in CoreFoundation) 7 atom::NodeBindings::EmbedThreadRunner(void) (in Atom Framework) 7 atom::NodeBindings::UvRunOnce() (in Atom Framework) 7 base::SampleVector::GetBucketIndex(int) const (in libchromiumcontent.dylib) 7 base::ThreadLocalStorage::StaticSlot::Get() const (in libchromiumcontent.dylib) 7 base::debug::TaskAnnotator::RunTask(char const, char const, base::PendingTask const&) (in libchromiumcontent.dylib) 7 base::internal::WeakReferenceOwner::GetRef() const (in libchromiumcontent.dylib) 7 base::subtle::RefCountedThreadSafeBase::HasOneRef() const (in libchromiumcontent.dylib) 7 blink::WebThreadSupportingGC::detachGC() (in libchromiumcontent.dylib) 7 objc_collectingEnabled (in libobjc.A.dylib) 7 tracked_objects::ThreadData::Now() (in libchromiumcontent.dylib) 7 tracked_objects::ThreadData::TallyABirth(tracked_objects::Location const&) (in libchromiumcontent.dylib) 7 +[NSAutoreleasePool allocWithZone:](in Foundation) 6 CFAbsoluteTimeGetCurrent (in CoreFoundation) 6 DYLD-STUB$$OSAtomicCompareAndSwap64Barrier (in libsystem_pthread.dylib) 6 NSPopAutoreleasePool (in Foundation) 6 _CFArrayReplaceValues (in CoreFoundation) 6 _CFRetain (in CoreFoundation) 6 atom::NodeBindingsMac::PollEvents() (in Atom Framework) 6 base::subtle::RefCountedThreadSafeBase::RefCountedThreadSafeBase() (in libchromiumcontent.dylib) 6 content::RendererBlinkPlatformImpl::MockBatteryStatusChangedForTesting(blink::WebBatteryStatus const&) (in libchromiumcontent.dylib) 6 content::WebThreadImplForMessageLoop::~WebThreadImplForMessageLoop() (in libchromiumcontent.dylib) 6 gettimeofday (in libsystem_c.dylib) 6 malloc_zone_malloc (in libsystem_malloc.dylib) 6 pthread_getspecific (in libsystem_pthread.dylib) 6 tracked_objects::TaskStopwatch::Stop() (in libchromiumcontent.dylib) 6 v8::Context::Enter() (in libchromiumcontent.dylib) 6 -[NSCFString isEqual:](in CoreFoundation) 5 _CFRunLoopFinished (in CoreFoundation) 5 base::MessageLoop::DoWork() (in libchromiumcontent.dylib) 5 base::PendingTask::PendingTask(trackedobjects::Location const&, base::Callback<void ()> const&, base::TimeTicks, bool) (in libchromiumcontent.dylib) 5 base::internal::CallbackBase::CallbackBase(base::internal::BindStateBase) (in libchromiumcontent.dylib) 5 base::internal::IncomingTaskQueue::~IncomingTaskQueue() (in libchromiumcontent.dylib) 5 base::internal::WeakReference::~WeakReference() (in libchromiumcontent.dylib) 5 uv_run (in Atom Framework) 5
Binary Images:
0x103df8000 - 0x103df8fff +com.github.atom.helper (0.206.0 - 0.206.0) <01640C31-CD77-3CDE-A785-A8A2F391F75E> /Applications/Atom.app/Contents/Frameworks/Atom Helper.app/Contents/MacOS/Atom Helper
0x103dfe000 - 0x10418efff +com.github.AtomFramework (0)
Naively (very naively), it looks like the event loop is quickly firing timed events (did someone queue an event with N milliseconds rather than N seconds?) and that it might be tied to blinking cursors?
Thats very possible , i will take a look.
On Sat, Jun 6, 2015 at 4:11 AM, mzbik notifications@github.com wrote:
Naively (very naively), it looks like the event loop is quickly firing timed events (did someone queue an event with N milliseconds rather than N seconds?) and that it might be tied to blinking cursors?
— Reply to this email directly or view it on GitHub https://github.com/romgrk/termrk/issues/19#issuecomment-109447651.
I disabled blinking and it still pegged a CPU. If the weather wasn't so nice, I'd start looking into pty
On Jun 6, 2015, at 5:48 AM, Phyo Arkar Lwin notifications@github.com wrote:
Thats very possible , i will take a look.
On Sat, Jun 6, 2015 at 4:11 AM, mzbik notifications@github.com wrote:
Naively (very naively), it looks like the event loop is quickly firing timed events (did someone queue an event with N milliseconds rather than N seconds?) and that it might be tied to blinking cursors?
— Reply to this email directly or view it on GitHub https://github.com/romgrk/termrk/issues/19#issuecomment-109447651.
— Reply to this email directly or view it on GitHub.
Hello, thanks for the (very) detailed information you provided. I will be looking into this during the week, and should come up with something next weekend. (see note https://github.com/romgrk/termrk/issues/18)
I agree that the problem possibly comes from pty. I didn't looked in much, but I know it contains some very platform-dependent code.
One thought is that pry exposes a handle that Libuv is supposed to wait on. It may be the case that the wait/select call is returning immediately with "no data" as opposed to waiting until there is data.
On Jun 6, 2015, at 11:20 AM, romgrk notifications@github.com wrote:
Hello, thanks for the (very) detailed information you provided. I will be looking into this during the week, and should come up with something next weekend. (see note #18)
I agree that the problem possibly comes from pty. I didn't looked in much, but I know it contains some very platform-dependent code.
— Reply to this email directly or view it on GitHub.
Hello, This should be fixed, if someone could confirm I will close this. Thanks!
New version appears to solve the problem (in conjunction with Atom 1.0.7).
Close it!
On Aug 16, 2015, at 11:58 AM, romgrk notifications@github.com wrote:
Hello, This should be fixed, if someone could confirm I will close this. Thanks!
— Reply to this email directly or view it on GitHub https://github.com/romgrk/termrk/issues/19#issuecomment-131602388.
OSX 10.10.3, all software as up to date as I can make it.
Is there a never-ending completion?