--- Begin Message ---
Package: libqt4-script
Version: 4:4.8.4+dfsg-4
Severity: normal
--- Please enter the report below this line. ---
I've noticed that plasma-desktop (and kwin too) is using a LOT of VIRT, i.e.
>2GB:
5254 edwin 20 0 2943320 65652 35756 t 0.0 0.8 0:02.00
plasma-desktop
On a machine with 8GB of physical RAM and swap turned off this quickly gets you
to the limit of OOM killing other apps (kwin + plasma-desktop + consolekit all
using 1>GB, and then icedove+iceweasel too).
After some debugging I've traced the culprit to libqt4-script called from the
'Device Notifier' widget:
#1 0x00000033b1ca2dbc in FixedVMPoolAllocator (totalHeapSize=2147483648,
commonSize=<optimized out>, this=0x1763a70)
at
../3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp:308
308 m_base = mmap(reinterpret_cast<void*>(randomLocation),
m_totalHeapSize, INITIAL_PROTECTION_FLAGS, MAP_PRIVATE | MAP_ANON |
MAP_NORESERVE, VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY, 0);
(gdb) print m_totalHeapSize
$6 = 2147483648
So apparently some Javascript JIT maps 2GB of executable memory, due to:
#if CPU(X86_64)
// These limits suitable on 64-bit platforms (particularly x86-64, where we
require all jumps to have a 2Gb max range).
#define VM_POOL_SIZE (2u * 1024u * 1024u * 1024u) // 2Gb
See here for some discussions upstream, but leading to no solution (still
allocates 2GB):
https://bugs.webkit.org/show_bug.cgi?id=42756
It seems silly to allocate 2GB just to avoid having jumps crossing 2GB
boundaries, when there is a dedicated mmap() flag that ensures all addresses
are within 1st 2GB: MAP_32BIT.
I'd suggest to use that flag and set the VM_POOL_SIZE to 32MB like it is for
32-bit apps.
It would be best if the JIT could also be disabled at runtime for
libqt4-script, for applications that don't strictly require it, like plasma,
etc.
Full backtrace:
#0 0x0000003134ce43ca in mmap64 () at ../sysdeps/unix/syscall-template.S:81
#1 0x00000033b1ca2dbc in FixedVMPoolAllocator (totalHeapSize=2147483648,
commonSize=<optimized out>, this=0x1763a70)
at
../3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp:308
#2 QTJSC::ExecutablePool::systemAlloc (size=size@entry=16384)
at
../3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp:443
#3 0x00000033b1d27a99 in ExecutablePool (n=<optimized out>,
this=0x7fffe40de960)
at ../3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocator.h:258
#4 create (n=<optimized out>) at
../3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocator.h:97
#5 ExecutableAllocator (this=0x7fffe40d89c8) at
../3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocator.h:150
#6 QTJSC::JSGlobalData::JSGlobalData (this=0x7fffe40d7800, isShared=<optimized
out>)
at ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalData.cpp:146
#7 0x00000033b1d2825c in QTJSC::JSGlobalData::create ()
at ../3rdparty/javascriptcore/JavaScriptCore/runtime/JSGlobalData.cpp:205
#8 0x00000033b1dc87e0 in QScriptEnginePrivate::QScriptEnginePrivate
(this=0x159fa70) at api/qscriptengine.cpp:979
#9 0x00000033b1dc97d6 in QScriptEngine::QScriptEngine (this=0x159f538) at
api/qscriptengine.cpp:1964
#10 0x00000033b37b362c in QDeclarativeScriptEngine::QDeclarativeScriptEngine
(this=0x159f538, priv=0x159f430)
at qml/qdeclarativeengine.cpp:385
#11 0x00000033b37bc54f in QDeclarativeEnginePrivate::QDeclarativeEnginePrivate
(this=0x159f430, e=0x10295c0)
at qml/qdeclarativeengine.cpp:356
#12 0x00000033b37bc831 in QDeclarativeEngine::QDeclarativeEngine
(this=0x10295c0, parent=0x18c5e30)
at qml/qdeclarativeengine.cpp:642
#13 0x00007ffff79d49c4 in Plasma::DeclarativeWidget::DeclarativeWidget
(this=0x18c5e30, parent=<optimized out>)
at ../../plasma/widgets/declarativewidget.cpp:196
#14 0x00007fffdedca08f in ?? () from
/usr/lib/kde4/plasma_appletscript_declarative.so
#15 0x00007ffff790310f in Plasma::Applet::init (this=0x9d4ad0) at
../../plasma/applet.cpp:249
#16 0x00007fffed65dd57 in SystemTray::PlasmoidTask::createWidget
(this=0x13660a0, host=0xa84300)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/protocols/plasmoid/plasmoidtask.cpp:105
#17 0x00007fffed64facc in SystemTray::Task::widget (this=0x13660a0,
host=0xa84300, createIfNecessary=true)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/core/task.cpp:79
#18 0x00007fffed67415b in SystemTray::TaskArea::addWidgetForTask
(this=0xcd4b20, task=0x13660a0)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/ui/taskarea.cpp:265
#19 0x00007fffed673b33 in SystemTray::TaskArea::addTask (this=0xcd4b20,
task=0x13660a0)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/ui/taskarea.cpp:196
#20 0x00007fffed675f96 in SystemTray::TaskArea::qt_static_metacall
(_o=0xcd4b20, _c=QMetaObject::InvokeMetaMethod, _id=2,
_a=0x7fffffffc660) at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/taskarea.moc:66
#21 0x00000033b478cdcf in QMetaObject::activate (sender=0x97ad00, m=<optimized
out>, local_signal_index=<optimized out>,
argv=0x7fffffffc660) at kernel/qobject.cpp:3539
#22 0x00007fffed64e8a7 in SystemTray::Manager::taskAdded (this=0x97ad00,
_t1=0x13660a0)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/manager.moc:113
#23 0x00007fffed64e40a in SystemTray::Manager::addTask (this=0x97ad00,
task=0x13660a0)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/core/manager.cpp:87
#24 0x00007fffed64e743 in SystemTray::Manager::qt_static_metacall (_o=0x97ad00,
_c=QMetaObject::InvokeMetaMethod, _id=3,
_a=0x7fffffffc870) at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/manager.moc:63
#25 0x00000033b478cdcf in QMetaObject::activate (sender=0x97dc50, m=<optimized
out>, local_signal_index=<optimized out>,
argv=0x7fffffffc870) at kernel/qobject.cpp:3539
#26 0x00007fffed64f77f in SystemTray::Protocol::taskCreated (this=0x97dc50,
_t1=0x13660a0)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/protocol.moc:105
#27 0x00007fffed65ba1a in SystemTray::PlasmoidProtocol::addApplet
(this=0x97dc50, appletName=..., id=10, parent=0xa84300)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/protocols/plasmoid/plasmoidtaskprotocol.cpp:112
#28 0x00007fffed65b6d7 in SystemTray::PlasmoidProtocol::loadFromConfig
(this=0x97dc50, parent=0xa84300)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/protocols/plasmoid/plasmoidtaskprotocol.cpp:83
#29 0x00007fffed64e4e1 in SystemTray::Manager::loadApplets (this=0x97ad00,
parent=0xa84300)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/core/manager.cpp:105
#30 0x00007fffed6660be in SystemTray::Applet::configChanged (this=0xa84300)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/ui/applet.cpp:207
#31 0x00007fffed6664a4 in SystemTray::Applet::constraintsEvent (this=0xa84300,
constraints=...)
at
/tmp/kde-workspace-4.8.4/plasma/generic/applets/systemtray/ui/applet.cpp:254
#32 0x00007ffff7909690 in Plasma::Applet::flushPendingConstraintsEvents
(this=0xa84300) at ../../plasma/applet.cpp:1365
#33 0x00007ffff7917e92 in Plasma::ContainmentPrivate::initApplets
(this=0x9af300) at ../../plasma/containment.cpp:470
#34 0x00007ffff792b85b in Plasma::CoronaPrivate::importLayout (this=0x7a9360,
conf=..., mergeConfig=mergeConfig@entry=false)
at ../../plasma/corona.cpp:1067
#35 0x00007ffff792c4b4 in Plasma::Corona::loadLayout (this=this@entry=0x7100b0,
configName=...) at ../../plasma/corona.cpp:278
#36 0x00007ffff792c57c in Plasma::Corona::initializeLayout (this=0x7100b0,
configName=...) at ../../plasma/corona.cpp:181
#37 0x00007ffff7db06b1 in PlasmaApp::corona (this=0x675e70,
createIfMissing=true)
at /tmp/kde-workspace-4.8.4/plasma/desktop/shell/plasmaapp.cpp:833
#38 0x00007ffff7dadaba in PlasmaApp::setupDesktop (this=0x675e70)
at /tmp/kde-workspace-4.8.4/plasma/desktop/shell/plasmaapp.cpp:312
#39 0x00007ffff7db52d5 in PlasmaApp::qt_static_metacall (_o=0x675e70,
_c=QMetaObject::InvokeMetaMethod, _id=14, _a=0x67aff0)
at /tmp/kde-workspace-4.8.4/plasma/desktop/shell/plasmaapp.moc:119
#40 0x00000033b479229e in QObject::event (this=this@entry=0x675e70,
e=e@entry=0x7ee700) at kernel/qobject.cpp:1194
#41 0x00000033b477ccfc in QCoreApplication::event (this=this@entry=0x675e70,
e=e@entry=0x7ee700)
at kernel/qcoreapplication.cpp:1758
#42 0x00000033b59d1b74 in QApplication::event (this=0x675e70, e=0x7ee700) at
kernel/qapplication.cpp:2549
#43 0x00000033b59ca0ec in QApplicationPrivate::notify_helper
(this=this@entry=0x68df60, receiver=receiver@entry=0x675e70,
e=e@entry=0x7ee700) at kernel/qapplication.cpp:4567
#44 0x00000033b59cca5b in QApplication::notify (this=this@entry=0x675e70,
receiver=receiver@entry=0x675e70, e=e@entry=0x7ee700)
at kernel/qapplication.cpp:4428
#45 0x00007ffff5769a66 in KApplication::notify (this=0x675e70,
receiver=0x675e70, event=0x7ee700)
at ../../kdeui/kernel/kapplication.cpp:311
#46 0x00000033b47783ae in QCoreApplication::notifyInternal (this=0x675e70,
receiver=receiver@entry=0x675e70,
event=event@entry=0x7ee700) at kernel/qcoreapplication.cpp:946
#47 0x00000033b477bee1 in sendEvent (event=0x7ee700, receiver=0x675e70)
at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#48 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0,
event_type=event_type@entry=0, data=0x619160)
at kernel/qcoreapplication.cpp:1570
#49 0x00000033b477c213 in QCoreApplication::sendPostedEvents
(receiver=receiver@entry=0x0, event_type=event_type@entry=0)
#50 0x00000033b47a6b53 in sendPostedEvents () at
../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:236
#51 postEventSourceDispatch (s=0x68d3f0) at kernel/qeventdispatcher_glib.cpp:279
#52 0x00000033af248d95 in g_main_context_dispatch () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#53 0x00000033af2490d8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#54 0x00000033af249194 in g_main_context_iteration () from
/lib/x86_64-linux-gnu/libglib-2.0.so.0
#55 0x00000033b47a6ce6 in QEventDispatcherGlib::processEvents (this=0x61aa40,
flags=...) at kernel/qeventdispatcher_glib.cpp:424
#56 0x00000033b5a6bf9e in QGuiEventDispatcherGlib::processEvents
(this=<optimized out>, flags=...)
at kernel/qguieventdispatcher_glib.cpp:204
#57 0x00000033b47770ff in QEventLoop::processEvents
(this=this@entry=0x7fffffffdd90, flags=...) at kernel/qeventloop.cpp:149
#58 0x00000033b4777388 in QEventLoop::exec (this=this@entry=0x7fffffffdd90,
flags=...) at kernel/qeventloop.cpp:204
#59 0x00000033b477ca66 in QCoreApplication::exec () at
kernel/qcoreapplication.cpp:1218
#60 0x00007ffff7d92029 in kdemain (argc=2, argv=0x7fffffffe1a8) at
/tmp/kde-workspace-4.8.4/plasma/desktop/shell/main.cpp:120
#61 0x0000003134c21a55 in __libc_start_main (main=0x400750, argc=2,
ubp_av=0x7fffffffe1a8, init=<optimized out>,
fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe198)
at libc-start.c:260
#62 0x0000000000400781 in _start ()
--- System information. ---
Architecture: amd64
Kernel: Linux 3.9.5
Debian Release: jessie/sid
500 unstable ftp.ro.debian.org
500 stable security.debian.org
500 stable ftp.ro.debian.org
--- Package information. ---
Depends (Version) | Installed
=================================-+-===================
libc6 (>= 2.14) |
libgcc1 (>= 1:4.1.1) |
libqtcore4 (= 4:4.8.4+dfsg-4) |
libqtdbus4 (= 4:4.8.4+dfsg-4) |
libstdc++6 (>= 4.1.1) |
Package's Recommends field is empty.
Package's Suggests field is empty.
--- End Message ---