Archived

This topic is now archived and is closed to further replies.

Gimpy2001

uTorrent Mac client using 100% CPU

Recommended Posts

As you might know, there's finally a beta version available for Mac users. I though this thread would be good, so that Mac user like me can give feedback and report bug found in the beta, since there's no specific Mac forum/section.

To start the topic, I've found one problem.

Desciption of the problem: uTorrent will use 100% of the CPU, so the fan will turn on at full speed, even if there's no active torrents.

Operating System: Mac OS X 10.5.5

Platform: Mactel (Intel based Macintosh)

Let me know if you need further informations.

Share this post


Link to post
Share on other sites

Moved to the Mac forum. To prevent this thread from becoming a conglomerate bug reporting thread (that's never a good thing), I've split the posts up.

Share this post


Link to post
Share on other sites

I have the same issue. I just downloaded µTorrent from the beta page. When I started it up, it was using 100% CPU. I waited to see if it was some temporary thing, but CPU usage never went down.

As I'm on a laptop, I can't use uTorrent with all the fans running, so I hope this gets fixed soon.

Mac OS X 10.5.5 / 32-bit Intel (Core Duo).

Share this post


Link to post
Share on other sites

Have you ever run the leaked builds? Does it still happen if you clear the preferences (delete /Users/username/Library/Preferences/com.bittorrent.µTorrent.plist and /Users/username/Library/Application Support/uTorrent)? Can you take a sample and post it? (Open Activity Monitor, select uTorrent and hit 'Sample')

Share this post


Link to post
Share on other sites

Here is the sample from the activity monitor

Sampling process 13637 for 3 seconds with 1 millisecond of run time between samples

Sampling completed, processing symbols...

Analysis of sampling uTorrent (pid 13637) every 1 millisecond

Call graph:

1894 Thread_2503

1894 start

1894 NSApplicationMain

1894 -[NSApplication run]

1894 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]

1894 _DPSNextEvent

1894 BlockUntilNextEventMatchingListInMode

1894 ReceiveNextEventCommon

1894 RunCurrentEventLoopInMode

1894 CFRunLoopRunInMode

1894 CFRunLoopRunSpecific

1876 mach_msg

1876 mach_msg_trap

1876 mach_msg_trap

11 __CFRunLoopDoObservers

11 _handleWindowNeedsDisplay

11 -[NSWindow displayIfNeeded]

11 -[NSView displayIfNeeded]

11 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]

11 -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

11 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

11 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

10 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

10 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

9 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

5 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]

5 -[NSView _drawRect:clip:]

4 -[NSControl drawRect:]

4 -[NSButtonCell drawInteriorWithFrame:inView:]

4 -[NSButtonCell _configureAndDrawTitleWithRect:cellFrame:controlView:]

3 -[NSButtonCell drawTitle:withFrame:inView:]

3 -[NSAttributedString(NSStringDrawingExtension) _drawCenteredVerticallyInRect:scrollable:]

3 _NSStringDrawingCore

3 __NSCreateRenderingContextForAttributedString

1 -[NSMutableAttributedString(NSMutableAttributedStringKitAdditions) fixAttributesInRange:]

1 -[NSMutableAttributedString(NSMutableAttributedStringKitAdditions) fixFontAttributeInRange:]

1 -[NSMutableAttributedString addAttribute:value:range:]

1 -[NSAttributeDictionary mutableCopyWithZone:]

1 -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]

1 -[NSObject copy]

1 -[NSCFString copyWithZone:]

1 CFStringCreateCopy

1 CFStringCreateCopy

1 -[NSSingleLineTypesetter createRenderingContextForCharacterRange:typesetterBehavior:usesScreenFonts:hasStrongRight:maximumWidth:]

1 -[NSATSTypesetter endParagraph]

1 -[NSATSTypesetter endParagraph]

1 -[_NSCachedAttributedString cache]

1 -[_NSCachedAttributedString cache]

1 -[NSButtonCell titleRectForBounds:]

1 -[NSButtonCell(NSButtonCellPrivate) _centerTitle:inRect:]

1 -[NSAttributedString(NSStringDrawingExtension) _sizeWithSize:]

1 -[NSAttributedString(NSExtendedStringDrawing) boundingRectWithSize:options:]

1 __NSCreateRenderingContextForAttributedString

1 -[NSSingleLineTypesetter createRenderingContextForCharacterRange:typesetterBehavior:usesScreenFonts:hasStrongRight:maximumWidth:]

1 -[NSATSTypesetter _layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:]

1 -[NSATSLineFragment layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:]

1 -[NSATSTypesetter _ctTypesetter]

1 -[NSATSGlyphStorage createCTTypesetter]

1 CTTypesetterCreateWithRunArray

1 TTypesetterRunArray::TTypesetterRunArray(__CFArray const*, __CFString const*, void const* (*)(__CTRun const*, __CFString const*, void*), void*)

1 TTypesetter::TTypesetter(TCharStream&)

1 TLine::TLine()

1 TLine::TLine()

1 CGContextRestoreGState

1 CGGStackRestore

1 CGGStateRelease

1 strokeStateRelease

1 dyld_stub_malloc_zone_free

1 dyld_stub_malloc_zone_free

3 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

3 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

2 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

1 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

1 -[NSView unlockFocus]

1 -[NSFocusStack popTopView]

1 PSgrestore

1 -[NSCFArray removeLastObject]

1 -[NSCFArray removeObjectAtIndex:]

1 _CFArrayReplaceValues

1 __CFArrayReleaseValues

1 CFRelease

1 -[NSObject release]

1 __CFDoExternRefOperation

1 CFBagContainsValue

1 __CFBagFindBuckets1a

1 __CFBagFindBuckets1a

1 objc_msgSend

1 objc_msgSend

1 -[NSConcreteMapTable objectForKey:]

1 -[NSConcreteMapTable objectForKey:]

1 -[NSView _drawRect:clip:]

1 CGSNewRegionWithRect

1 CGSNewRegion

1 CGTypeCreateInstanceWithAllocator

1 _CFRuntimeCreateInstance

1 malloc_zone_malloc

1 szone_malloc

1 tiny_malloc_from_free_list

1 tiny_malloc_from_free_list

1 -[NSView lockFocus]

1 -[NSView lockFocusIfCanDraw]

1 -[NSView _focusFromView:withContext:]

1 -[NSView _gatherFocusStateInto:upTo:withContext:]

1 -[NSView _gatherFocusStateInto:upTo:withContext:]

1 _CFRelease

1 __CFArrayReleaseValues

1 objc_msgSend

1 objc_msgSend

7 __NSFireTimer

7 -[DetailsController updateUI]

6 -[NSView displayIfNeeded]

6 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:]

2 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

2 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]

2 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:]

2 -[NSView _drawRect:clip:]

2 -[NSBezierPath(Additions) linearGradientFillWithStartColor:endColor:]

2 -[NSBezierPath(Additions) customVerticalFillWithCallbacks:firstColor:secondColor:]

1 CGContextDrawShading

1 ripc_DrawShading

1 ripl_BltShade

1 argb32_shade

1 argb32_image_mark

1 argb32_image_mark

1 _CFRelease

1 __spin_lock

1 __spin_lock

2 -[NSView lockFocus]

2 -[NSView lockFocusIfCanDraw]

1 -[NSFocusStack focusView:inWindow:]

1 _NSAddAltHandler2

1 __addAltHandler2

1 __addAltHandler2

1 -[NSFocusState flush]

1 objc_msgSend

1 objc_msgSend

2 -[NSWindow flushWindow]

2 CGContextFlush

2 ripc_Operation

2 CGSDeviceSynchronize

2 _CGSFlushRegionInline

2 mach_msg

2 mach_msg_trap

2 mach_msg_trap

1 -[AvailabilityView updateData:]

1 -[NSView setNeedsDisplay:]

1 -[NSView setNeedsDisplayInRect:]

1 -[NSView convertRect:toView:]

1 -[NSView _convertRect:toAncestor:]

1 -[NSView _convertRect:toAncestor:]

1 -[NSView _convertRect:toAncestor:]

1 -[NSView _convertRect:toAncestor:]

1 -[NSView _convertRect:toAncestor:]

1 objc_msgSend

1 objc_msgSend

1894 Thread_2603

1894 thread_start

1894 _pthread_start

1894 google_breakpad::ExceptionHandler::WaitForMessage(void*)

1894 mach_msg

1894 mach_msg_trap

1894 mach_msg_trap

1894 Thread_2703

1894 thread_start

1894 _pthread_start

1894 __NSThread__main__

1894 -[NSThread main]

1894 +[bitTorrent main:]

1894 Startup(unsigned long, int, wchar_t**)

1894 LApp::message_loop()

1894 MsgQ::GetNextMessage(int)

1894 EventObject::WaitForSingleObject(int)

1894 pthread_cond_timedwait$UNIX2003

1894 __semwait_signal

1894 __semwait_signal

1894 Thread_2803

1894 thread_start

1894 _pthread_start

1894 IOThread(void*)

1894 EventObject::WaitForSingleObject(int)

1894 pthread_cond_timedwait$UNIX2003

1894 __semwait_signal

1894 __semwait_signal

1894 Thread_2903

1894 thread_start

1894 _pthread_start

1894 DnsThread(void*)

1894 EventObject::WaitForSingleObject(int)

1894 pthread_cond_timedwait$UNIX2003

1894 __semwait_signal

1894 __semwait_signal

1894 Thread_2a03

1894 thread_start

1894 _pthread_start

1894 NetworkThread(void*)

1894 Socket::NetworkEventLoop()

1033 CSocket::process_events(int)

1013 SocketProcessEvent(int)

995 UDPSocketManager::event(unsigned int)

949 UDPSocketManager::Flush(unsigned int, unsigned int)

831 sendto$UNIX2003

831 sendto$UNIX2003

37 __memcpy

37 __memcpy

25 CSocket::sendto(char const*, int, int, sockaddr*, unsigned int, int*)

11 CSocket::sendto(char const*, int, int, sockaddr*, unsigned int, int*)

7 KEVHandler::add_or_del_filter(bool)

7 KEVHandler::add_or_del_filter(bool)

7 __error

7 __error

21 cerror

8 cerror

8 cthread_set_errno_self

6 cthread_set_errno_self

2 __error

2 __error

5 __error

5 __error

19 GetTickCount()

18 gettimeofday

17 __gettimeofday

11 __nanotime

11 __nanotime

6 __gettimeofday

1 gettimeofday

1 GetTickCount()

11 UDPSocketManager::Flush(unsigned int, unsigned int)

2 SockAddr::get_sockaddr_storage(unsigned int*) const

2 SockAddr::get_sockaddr_storage(unsigned int*) const

2 _sysenter_trap

2 _sysenter_trap

1 __error

1 __error

31 GetTickCount()

26 gettimeofday

23 __gettimeofday

12 __nanotime

12 __nanotime

11 __gettimeofday

3 gettimeofday

5 GetTickCount()

11 UDPSocketManager::event(unsigned int)

4 memcpy

4 memcpy

14 SocketProcessEvent(int)

4 CSocket::get_revent_mask(unsigned int&, unsigned int&)

4 CSocket::get_revent_mask(unsigned int&, unsigned int&)

12 CSocket::process_events(int)

8 KEVHandler::add_or_del_filter(bool)

8 KEVHandler::add_or_del_filter(bool)

677 kevent

677 kevent

55 GetTickCount()

45 gettimeofday

29 __gettimeofday

15 __nanotime

15 __nanotime

14 __gettimeofday

16 gettimeofday

6 GetTickCount()

4 __commpage_gettimeofday

4 __commpage_gettimeofday

29 Socket::NetworkPostTimers(long, int)

12 TorrentSession::BtTick(unsigned int, long)

7 TorrentSession::BtTick(unsigned int, long)

5 DiskIO_CheckCompleted(bool)

5 DiskIO_CheckCompleted(bool)

5 Dns_ProcessFinished()

5 Dns_ProcessFinished()

4 BtTick(unsigned int, long)

4 BtTick(unsigned int, long)

4 URLConnection::Tick()

4 URLConnection::Tick()

2 Socket::NetworkPostTimers(long, int)

2 URLConnectionTick()

2 URLConnectionTick()

19 BtUnlock()

8 BtUnlock()

8 pthread_mutex_unlock

8 pthread_mutex_unlock

1 RMutex::unlock() const

1 RMutex::unlock() const

1 __spin_lock

1 __spin_lock

1 spin_lock

1 spin_lock

19 Socket::NetworkLoop(long)

19 Socket::NetworkLoop(long)

17 Socket::NetworkEventLoop()

11 pthread_mutex_lock

11 pthread_mutex_lock

10 CSocket::select(int)

8 CSocket::select(int)

2 kevent

2 kevent

7 UTP_CheckTimeouts(UDPSocketManager*)

7 UTP_CheckTimeouts(UDPSocketManager*)

6 GetTLS()

5 GetTLS()

1 pthread_getspecific

1 pthread_getspecific

3 __spin_lock

3 __spin_lock

3 pthread_getspecific

3 pthread_getspecific

2 spin_unlock

2 spin_unlock

1 TcpSocket::drain_connq()

1 TcpSocket::drain_connq()

1 _sysenter_trap

1 _sysenter_trap

1 dyld_stub_kevent

1 dyld_stub_kevent

1894 Thread_2b03

1894 thread_start

1894 _pthread_start

1894 __NSThread__main__

1894 -[NSThread main]

1894 kevent

1894 kevent

1894 Thread_2c03

1894 thread_start

1894 _pthread_start

1894 __NSThread__main__

1894 -[NSThread main]

1894 +[NSURLConnection(NSURLConnectionReallyInternal) _resourceLoadLoop:]

1894 CFRunLoopRunInMode

1894 CFRunLoopRunSpecific

1894 mach_msg

1894 mach_msg_trap

1894 mach_msg_trap

1894 Thread_2d03

1894 thread_start

1894 _pthread_start

1894 select$DARWIN_EXTSN

1894 select$DARWIN_EXTSN

Total number in stack (recursive counted multiple, when >=5):

10 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:]

8 _pthread_start

8 thread_start

5 -[NSView _convertRect:toAncestor:]

Sort by top of stack, same collapsed (when >= 5):

__semwait_signal 5682

mach_msg_trap 5666

kevent 2573

select$DARWIN_EXTSN 1894

sendto$UNIX2003 831

__nanotime 38

__memcpy 37

__gettimeofday 31

gettimeofday 20

Socket::NetworkLoop(long) 19

Socket::NetworkEventLoop() 17

KEVHandler::add_or_del_filter(bool) 15

__error 15

SocketProcessEvent(int) 14

CSocket::process_events(int) 12

GetTickCount() 12

CSocket::sendto(char const*, int, int, sockaddr*, unsigned int, int*) 11

UDPSocketManager::Flush(unsigned int, unsigned int) 11

UDPSocketManager::event(unsigned int) 11

pthread_mutex_lock 11

BtUnlock() 8

CSocket::select(int) 8

cerror 8

pthread_mutex_unlock 8

TorrentSession::BtTick(unsigned int, long) 7

UTP_CheckTimeouts(UDPSocketManager*) 7

cthread_set_errno_self 6

DiskIO_CheckCompleted(bool) 5

Dns_ProcessFinished() 5

GetTLS() 5

__spin_lock 5

Sample analysis of process 13637 written to file /dev/stdout

Share this post


Link to post
Share on other sites

Removing the preference file and the directory in Application Support does not make this issue go away for me.

Notably, I have my Mac firewall configured so that I have to allow µTorrent to accept incoming connections. I got that dialog twice when I first started the program after downloading it. Could this have any effect on µTorrent's operation?

I also have PeerGuardian OS X installed and active.

Share this post


Link to post
Share on other sites

The Mac firewall won't affect uTorrent. I've got the same setting for it.

But it's quite possible that Peerguardian can be doing something. I would recommend removing it and trying again.

Share this post


Link to post
Share on other sites

You don't need PeerGuardian. The blocklists are maintained by someone who adds IP's based on personal grudges and refuses to remove them. utorrent.com has been blocked from the lists, as have major trackers.

Share this post


Link to post
Share on other sites

Actually I do need PeerGuardian. I create custom block lists for intrusion attempts... it's quite easy and I don't want to sacrifice that. I'd rather stick with Transmission as my BT client if µTorrent won't work with PG.

Also, the block lists are fully configurable. You don't have to use whatever lists you are referring to (the bluetack lists?).

Share this post


Link to post
Share on other sites

PeerGuardian is blocking access to BitTorrentInc which µTorrent constantly tries to access even with "Check for updates automatically" turned off. The connection error causes µTorrent's network thread to gobble 100% CPU apparently trying to constantly access the blocked address.

1) this is a bug in µTorrent - it should not go into a CPU loop on a network error

2) why is this access to BitTorrent Inc constantly occurring even with auto-update checking turned off?

Share this post


Link to post
Share on other sites

2) What about when you disable DHT? µTorrent always uses router.utorrent.com and router.bittorrent.com as DHT bootstrap nodes.

Share this post


Link to post
Share on other sites

I am also having the same problem. uTorrent is using 98-100% of CPU while PG2 is active. Turning off automatically check for updates does not fix the problem. Only disabling PG2 returns uTorrent to normal CPU usage.

Share this post


Link to post
Share on other sites

I think you get around the issue if you disable DHT as well.

Also PG2 is crap, it has utorrent.com in it's filters, that's why it happens.

Now, of course µTorrent shouldn't go in a loop like that, but until then, just get rid of PG2.

Share this post


Link to post
Share on other sites

µUtorrent is in the Bluetack lists (the default PG lists) because it is owned by BitTorrent Inc which has made arrangements of some kind with the MPAA. Saying PG is crap because of that is like saying µUtorrent is crap because it's owned by BitTorrent Inc.

The right solution is this case is to allow the the addresses that µTorrent wants to use or disable DHT. Of course µUtorrent should fix the CPU bug.

edit: I'm on Intel (32bit), 10.5.5.

Share this post


Link to post
Share on other sites

There's no legit reason to ban utorrent.com in PG. The only reason it's on the blacklist is because the person that maintains it adds and keeps IP's based on personal whims. In this case, he was upset that uTorrent wasn't made open source. There is no deal with the MPAA/RIAA/any sort of organization that has BitTorrent spying on users and reporting downloads. So no need to ban utorrent.com at all.

Share this post


Link to post
Share on other sites

PG is crap because it won't protect you from anything.

The same reason torrent sites can't be shut down, is the same reason anti-p2p organizations can't be blocked. They just have to move.

Also, the only reason to use PG is if you download illegally. The only way to be safe from getting caught is to stop, I would do that if it worried you so much.

Share this post


Link to post
Share on other sites

1) The default PG blocklists are maintained by Bluetack, the PG devs have no control over their content. The Bluetacks lists are used, because the PG devs don't have the resources to maintain their own lists.

2) "only reason to use PG is if you download illegally" - the same is said of all BitTorrent clients, so I guess we should all stop using them as well. For your edification, PG makes a great ad-block tool (especially for those that use multiple browsers or for browsers that don't have built-in Ad blocking) and is useful against local Apps that want to phone home.

3) The politics behind µTorrent being listed in the Bluetack lists has nothing to do with the µTorrent bug - it should be fixed.

Share this post


Link to post
Share on other sites