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.


-- 
To UNSUBSCRIBE, email to debian-qt-kde-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/51bc7b47.8070...@etorok.net

Reply via email to