22692 pts/7 Sl+ 289:49 | \_ GWorkspace
22697 ? Ss 10:38 | \_
/System/Tools/fswatcher --daemon --auto
22699 ? Ss 0:00 | \_
/System/Tools/ddbd --daemon --auto
so it is GWorkspace itself
top
22692 multix 20 0 296768 59872 12908 S 10.9 0.2 290:03.40
GWorkspace
but it is in state sleep, how can it consume so much CPU? (10% in a full
load system with 12CPU is... almost a CPU)
So let me try GDB
gdb -pid 22692
(gdb) bt
#0 0x00007fc175c0fb42 in ?? () from /lib64/libc.so.6
#1 0x00007fc175c0451c in ?? () from /lib64/libc.so.6
#2 0x00007fc175c04561 in ?? () from /lib64/libc.so.6
#3 0x00007fc175c79b0a in poll () from /lib64/libc.so.6
#4 0x00007fc1762bf268 in poll (__fds=<optimized out>, __nfds=<optimized
out>, __timeout=2)
at /usr/include/bits/poll2.h:44
#5 -[GSRunLoopCtxt pollUntil:within:] (self=<optimized out>,
_cmd=0x7fc1764d0180 <_OBJC_SELECTOR_TABLE+1184>,
milliseconds=2, contexts=0x55d6ef96a480) at GSRunLoopCtxt.m:395
#6 0x00007fc1761e12d4 in -[NSRunLoop acceptInputForMode:beforeDate:]
(self=0x55d6ef967d90,
_cmd=0x7fc1764d01b0 <_OBJC_SELECTOR_TABLE+1232>,
mode=0x7fc1764d0fb0 <_OBJC_INSTANCE_2>,
limit_date=0x55d6f177c590) at NSRunLoop.m:1259
#7 0x00007fc1761e0f94 in -[NSRunLoop runMode:beforeDate:]
(self=<optimized out>, _cmd=<optimized out>,
mode=0x7fc1764d0fb0 <_OBJC_INSTANCE_2>, date=<optimized out>) at
NSRunLoop.m:1339
#8 0x00007fc1769a4822 in -[GSDisplayServer(EventOps)
getEventMatchingMask:beforeDate:inMode:dequeue:] (
self=<optimized out>, _cmd=<optimized out>, mask=<optimized out>,
limit=<optimized out>,
mode=<optimized out>, flag=<optimized out>) at GSDisplayServer.m:1037
#9 0x00007fc171e9a20a in -[XGServer(X11Ops)
getEventMatchingMask:beforeDate:inMode:dequeue:] (
self=0x55d6ef63fec0, _cmd=<optimized out>, mask=4294967295,
limit=0x55d6ef97f420,
mode=0x7fc1764d0fb0 <_OBJC_INSTANCE_2>, flag=1 '\001') at
XGServerEvent.m:2743
#10 0x00007fc1767dd9c5 in DPSPeekEvent (ctxt=<optimized out>,
mask=<optimized out>, limit=<optimized out>,
mode=<optimized out>) at
../Headers/Additions/GNUstepGUI/GSDisplayServer.h:210
#11 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
(self=0x55d6ef863ba0,
_cmd=0x7fc176b125b0 <_OBJC_SELECTOR_TABLE+2928>, mask=4294967295,
expiration=0x55d6ef97f420,
mode=0x7fc1764d0fb0 <_OBJC_INSTANCE_2>, flag=1 '\001') at
NSApplication.m:2208
#12 0x00007fc1767df8de in -[NSApplication run] (self=0x55d6ef863ba0,
_cmd=<optimized out>) at NSApplication.m:1579
#13 0x000055d6c71cd987 in main (argc=<optimized out>, argv=<optimized
out>, env=<optimized out>) at main.m:38
There is no direct GWorkspace class in this trace actually
which would say it is in poll runloop. A wild guess it is waiting for an
event from X11. Keyboard or Mouse?
Or instead it is using X for polling a different event.
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7fc171fa4500 (LWP 22692) "GWorkspace" 0x00007fc175c0fb42
in ?? () from /lib64/libc.so.6
2 Thread 0x7fc1700166c0 (LWP 22723) "GWorkspace"
0x00007fc175c0fb42 in ?? () from /lib64/libc.so.6
shows me there are two threads.
If I switch to the second thread, I see:
[Switching to thread 2 (Thread 0x7fc1700166c0 (LWP 22723))]
#0 0x00007fc175c0fb42 in ?? () from /lib64/libc.so.6
(gdb) bt
#0 0x00007fc175c0fb42 in ?? () from /lib64/libc.so.6
#1 0x00007fc175c0451c in ?? () from /lib64/libc.so.6
#2 0x00007fc175c04561 in ?? () from /lib64/libc.so.6
#3 0x00007fc175c79b0a in poll () from /lib64/libc.so.6
#4 0x00007fc1762bf268 in poll (__fds=<optimized out>, __nfds=<optimized
out>, __timeout=2147483647)
at /usr/include/bits/poll2.h:44
#5 -[GSRunLoopCtxt pollUntil:within:] (self=<optimized out>,
_cmd=0x7fc1764d0180 <_OBJC_SELECTOR_TABLE+1184>,
milliseconds=2147483647, contexts=0x7fc168001800) at
GSRunLoopCtxt.m:395
#6 0x00007fc1761e12d4 in -[NSRunLoop acceptInputForMode:beforeDate:]
(self=0x7fc1680017b0,
_cmd=0x7fc1764d01b0 <_OBJC_SELECTOR_TABLE+1232>,
mode=0x7fc1764d0fb0 <_OBJC_INSTANCE_2>,
limit_date=0x55d6ef97f420) at NSRunLoop.m:1259
#7 0x00007fc1761e0f94 in -[NSRunLoop runMode:beforeDate:]
(self=<optimized out>, _cmd=<optimized out>,
mode=0x7fc1764d0fb0 <_OBJC_INSTANCE_2>, date=<optimized out>) at
NSRunLoop.m:1339
#8 0x00007fc1761df2c9 in -[NSRunLoop runUntilDate:]
(self=0x7fc1680017b0, _cmd=<optimized out>,
date=0x55d6ef97f420) at NSRunLoop.m:1369
#9 0x00007fc1703d9948 in +[ImageResizer connectWithPorts:]
(self=0x7fc1703e0d80 <_OBJC_Class_ImageResizer>,
_cmd=<optimized out>, portArray=<optimized out>) at Resizer.m:54
#10 0x00007fc176216d3e in nsthreadLauncher (thread=0x55d6f0613b30) at
NSThread.m:1490
#11 0x00007fc175c07c13 in ?? () from /lib64/libc.so.6
#12 0x00007fc175c86f6c in ?? () from /lib64/libc.so.6
which shows too polling, again an event, in this case it is the
ImageResizer thread.
49 serverObject = [[self alloc] init];
50 if (serverObject)
51 {
52 [(id)[serverConnection rootProxy] setResizer:serverObject];
53 [serverObject release];
54 [[NSRunLoop currentRunLoop] run];
55 }
56 [pool release];
57 [NSThread exit];
Is inter-thread DistributedObject stuck? something starved? I don't know...
Interesting is that is usually works and gets just sometimess suck,
pointing out to some peculiar condition.
Riccardo