Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
openjdk-17.0.13_p11 extreme RAM usage
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Portage & Programming
View previous topic :: View next topic  
Author Message
shadowfly
n00b
n00b


Joined: 21 Feb 2024
Posts: 18

PostPosted: Sun Oct 20, 2024 12:08 pm    Post subject: openjdk-17.0.13_p11 extreme RAM usage Reply with quote

Hello there!
Background
I have dev-java/openjdk (17) installed since a few years back. A month (or so) ago i recompiled my system, because i had a KDE Plasma bug and wanted debug symbols and source code to be more helpful. Back then everything recompiled smoothly with emerge -e @world.
I update once a week, every weekend.

The problem
Today i tried to update again (emerge -aquDN @world), but my RAM usage shot up, and then the PC locked up.
lto1-wpa was using >50GB of RAM (32GB + swap).

lto sounds like Link Time Optimization. I have that enabled as far as i remember.

Workaround:
Code:
emerge -aquDN @world --exclude dev-java/openjdk


The question
Can someone confirm this, or is it just for me?

Additional info
CPU: Ryzen7-7700x
RAM: 32GB
Swap: 32GB


Quote:
emerge --info '=dev-java/openjdk-17.0.13_p11::gentoo'
Portage 3.0.65 (python 3.12.6-final-0, default/linux/amd64/23.0/desktop/plasma/systemd, gcc-13, glibc-2.39-r6, 6.6.51-gentoo-shadowfly x86_64)
=================================================================
System Settings
=================================================================
System uname: Linux-6.6.51-gentoo-shadowfly-x86_64-AMD_Ryzen_7_7700X_8-Core_Processor-with-glibc2.39
KiB Mem: 32565448 total, 23441972 free
KiB Swap: 33554428 total, 32952316 free
Timestamp of repository gentoo: Sun, 20 Oct 2024 10:30:00 +0000
Head commit of repository gentoo: f3ddae3deeeaab23f91f0c3202da8f72edcccbc2
Timestamp of repository farmboy0: Mon, 14 Oct 2024 12:50:23 +0000
Head commit of repository farmboy0: 6e660ad699863c00866ed5d941ea851f3c8ea1a9

Timestamp of repository guru: Sat, 19 Oct 2024 00:18:16 +0000
Head commit of repository guru: e344dda63b0598ac594840f6198e411290978b89

sh bash 5.2_p37
ld GNU ld (Gentoo 2.42 p6) 2.42.0
app-misc/pax-utils: 1.3.7::gentoo
app-shells/bash: 5.2_p37::gentoo
dev-build/autoconf: 2.71-r7::gentoo
dev-build/automake: 1.16.5-r2::gentoo
dev-build/cmake: 3.30.2::gentoo
dev-build/libtool: 2.4.7-r4::gentoo
dev-build/make: 4.4.1-r1::gentoo
dev-build/meson: 1.5.1::gentoo
dev-java/java-config: 2.3.4::gentoo
dev-lang/perl: 5.40.0::gentoo
dev-lang/python: 3.12.6_p4::gentoo
dev-lang/rust: 1.81.0::gentoo
sys-apps/baselayout: 2.15::gentoo
sys-apps/sandbox: 2.39::gentoo
sys-apps/systemd: 255.11::gentoo
sys-devel/binutils: 2.42-r2::gentoo
sys-devel/binutils-config: 5.5.2::gentoo
sys-devel/gcc: 13.3.1_p20240614::gentoo
sys-devel/gcc-config: 2.11::gentoo
sys-devel/llvm: 18.1.8-r1::gentoo
sys-kernel/linux-headers: 6.6-r1::gentoo (virtual/os-headers)
sys-libs/glibc: 2.39-r6::gentoo
Repositories:

gentoo
location: /var/db/repos/gentoo
sync-type: rsync
sync-uri: rsync://rsync.gentoo.org/gentoo-portage
priority: -1000
volatile: False
sync-rsync-verify-max-age: 24
sync-rsync-extra-opts:
sync-rsync-verify-jobs: 1
sync-rsync-verify-metamanifest: yes

farmboy0
location: /var/db/repos/farmboy0
sync-type: git
sync-uri: https://github.com/gentoo-mirror/farmboy0.git
masters: gentoo
volatile: False

guru
location: /var/db/repos/guru
sync-type: git
sync-uri: https://github.com/gentoo-mirror/guru.git
masters: gentoo
volatile: False

ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="@FREE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-march=native -pipe -flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing -Og -ggdb"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/dconf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d"
CXXFLAGS="-march=native -pipe -flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing -Og -ggdb"
DISTDIR="/var/cache/distfiles"
EMERGE_DEFAULT_OPTS="--jobs 2"
ENV_UNSET="CARGO_HOME DBUS_SESSION_BUS_ADDRESS DISPLAY GDK_PIXBUF_MODULE_FILE GOBIN GOPATH PERL5LIB PERL5OPT PERLPREFIX PERL_CORE PERL_MB_OPT PERL_MM_OPT XAUTHORITY XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR XDG_STATE_HOME"
FCFLAGS="-march=native -pipe -flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
FEATURES="assume-digests binpkg-docompress binpkg-dostrip binpkg-logs binpkg-multi-instance buildpkg-live clean-logs config-protect-if-modified distlocks ebuild-locks fixlafiles installsources ipc-sandbox merge-sync merge-wait multilib-strict network-sandbox news nostrip parallel-fetch pid-sandbox pkgdir-index-trusted preserve-libs protect-owned qa-unresolved-soname-deps sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-march=native -pipe -flto -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing"
GENTOO_MIRRORS="https://ftp.halifax.rwth-aachen.de/gentoo/ https://mirror.eu.oneandone.net/linux/distributions/gentoo/gentoo/ https://mirror.netcologne.de/gentoo/ https://mirror.init7.net/gentoo/"
LANG="en_US.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,-z,pack-relative-relocs"
LEX="flex"
MAKEOPTS="-j12 --load-average=16"
PKGDIR="/var/cache/binpkgs"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --exclude=/.git"
PORTAGE_TMPDIR="/var/tmp"
SHELL="/bin/zsh"
USE="X a52 aac acl acpi activities alsa amd64 bluetooth branding bzip2 cairo cdda cdr cet crypt cups dbus declarative dri dts dvd dvdr encode exif flac gdbm gif gpm grub gtk gui iconv icu ipv6 jpeg kde kf6compat kwallet lcms libnotify libtirpc lto mad mng mp3 mp4 mpeg multilib ncurses networkmanager nls ogg opengl openmp pam pango pcre pdf pipewire plasma png policykit ppds pulseaudio qml qt5 qt6 readline screencast sdl seccomp semantic-desktop sound spell ssl startup-notification svg systemd test-rust tiff truetype udev udisks unicode upower usb vaapi vdpau vorbis vulkan wayland widgets wxwidgets x264 xattr xcb xft xml xorg xv xvid xwayland zlib" ABI_X86="64" ADA_TARGET="gcc_12" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_anon authn_dbm authn_file authz_dbm authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir env expires ext_filter file_cache filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="karbon sheets words" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" CPU_FLAGS_X86="mmx mmxext sse sse2 aes avx avx2 avx512_bf16 avx512_bitalg avx512_vbmi2 avx512_vnni avx512_vpopcntdq avx512bw avx512cd avx512dq avx512f avx512ifma avx512vbmi avx512vl f16c fma3 pclmul popcnt rdrand sha sse3 sse4_1 sse4_2 sse4a ssse3 vpclmulqdq" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock greis isync itrax navcom oceanserver oncore rtcm104v2 rtcm104v3 sirf skytraq superstar2 tsip tripmate tnt ublox" GRUB_PLATFORMS="efi-64" GUILE_SINGLE_TARGET="3-0" GUILE_TARGETS="3-0" INPUT_DEVICES="libinput" KERNEL="linux" L10N="en en-US" LCD_DEVICES="bayrad cfontz glk hd44780 lb216 lcdm001 mtxorb text" LUA_SINGLE_TARGET="lua5-1" LUA_TARGETS="lua5-1" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php8-2" POSTGRES_TARGETS="postgres16" PYTHON_SINGLE_TARGET="python3_12" PYTHON_TARGETS="python3_12" RUBY_TARGETS="ruby32" VIDEO_CARDS="amdgpu radeonsi" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipp2p iface geoip fuzzy condition tarpit sysrq proto logmark ipmark dhcpmac delude chaos account"
Unset: ADDR2LINE, AR, ARFLAGS, AS, ASFLAGS, CC, CCLD, CONFIG_SHELL, CPP, CPPFLAGS, CTARGET, CXX, CXXFILT, ELFEDIT, EXTRA_ECONF, F77FLAGS, FC, GCOV, GPROF, INSTALL_MASK, LC_ALL, LD, LFLAGS, LIBTOOL, LINGUAS, MAKE, MAKEFLAGS, NM, OBJCOPY, OBJDUMP, PORTAGE_BINHOST, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, PYTHONPATH, RANLIB, READELF, RUSTFLAGS, SIZE, STRINGS, STRIP, YACC, YFLAGS
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2336

PostPosted: Sun Oct 20, 2024 3:15 pm    Post subject: Re: openjdk-17.0.13_p11 extreme RAM usage Reply with quote

shadowfly wrote:

The question
Can someone confirm this, or is it just for me?


Recompile the whole system with debug symbols disabled.

Best Regards,
Georgi
Back to top
View user's profile Send private message
shadowfly
n00b
n00b


Joined: 21 Feb 2024
Posts: 18

PostPosted: Sun Oct 20, 2024 5:52 pm    Post subject: Reply with quote

Hello,

for now, i just deactivated LTO for openjdk like here: https://wiki.gentoo.org/wiki/LTO#Disable_LTO_per_Package
This does work, the compilation does not consume much RAM anymore.

Personally, i would like to avoid recompiling everything and rather like someone else (who does have LTO, but does not have debug symbols) confirm the bug. For them this would not take more than like 10 minutes.
Then i (or they) could report it as described here: https://wiki.gentoo.org/wiki/LTO#New_Bugs_Procedure

But if nobody is found by next weekend, i am going to do recompile myself.
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2336

PostPosted: Sun Oct 20, 2024 6:13 pm    Post subject: Reply with quote

I misread your first post. Yes, LTO consumes a lot during compilation. So does debug symbols. I wonder how you even were able to recompile *the whole system* with debug symbols *and LTO*. Or at least the packages for which both applied to. That combination doesn't even make sense. Debug symbols also degrade performance. I guess you weren't around during the compilation to see what's going on. One does not usually enable debug symbols system wide either, especially when the problem is in higher level packages. I doubt debug symbols were even remotely useful to diagnose your issue with Plasma.

Best Regards,
Georgi
Back to top
View user's profile Send private message
shadowfly
n00b
n00b


Joined: 21 Feb 2024
Posts: 18

PostPosted: Sun Oct 20, 2024 6:55 pm    Post subject: Reply with quote

I definitely don't know what LTO is, only that it is supposed to make programs run a tiny bit faster. I also don't know what debug symbols are, except that i hoped to get more detailed crash reports at the expense of making everything slower while it is enabled.

Initially i enabled debug symbols and sources for kde-plasma/plasma-meta, kde-plasma/plasma-workspace and sys-libs/glibc. However there were still a lot of ??? in the stack traces, so i thought maybe more would be better?

This is a crash report with LTO, but without debug symbols/source code:
Code:
Thread 1 (Thread 0x7f05c3f659c0 (LWP 1311)):
[KCrash Handler]
#4  0x00007f05c891a8d2 in QV4::QObjectWrapper::wrap(QV4::ExecutionEngine*, QObject*) () at /usr/lib64/libQt6Qml.so.6
#5  0x00007f05c8abe2f0 in ??? () at /usr/lib64/libQt6Qml.so.6
#6  0x00007f05c8ac0e4a in QV4::QObjectWrapper::getQmlProperty(QV4::ExecutionEngine*, QQmlRefPointer<QQmlContextData> const&, QV4::Heap::Object*, QObject*, QV4::String*, QFlags<QV4::QObjectWrapper::Flag>, bool*, QQmlPropertyData const**) () at /usr/lib64/libQt6Qml.so.6
#7  0x00007f05c8c740be in QV4::QQmlTypeWrapper::virtualGet(QV4::Managed const*, QV4::PropertyKey, QV4::Value const*, bool*) () at /usr/lib64/libQt6Qml.so.6
#8  0x00007f05c8a91879 in QV4::Lookup::getterFallback(QV4::Lookup*, QV4::ExecutionEngine*, QV4::Value const&) () at /usr/lib64/libQt6Qml.so.6
#9  0x00007f05c8c7237e in QV4::QQmlTypeWrapper::virtualResolveLookupGetter(QV4::Object const*, QV4::ExecutionEngine*, QV4::Lookup*) () at /usr/lib64/libQt6Qml.so.6
#10 0x00007f05c8c44136 in ??? () at /usr/lib64/libQt6Qml.so.6
#11 0x00007f05c8c4833f in ??? () at /usr/lib64/libQt6Qml.so.6
#12 0x00007f05c8aed78e in ??? () at /usr/lib64/libQt6Qml.so.6
#13 0x00007f05c8a239fa in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () at /usr/lib64/libQt6Qml.so.6
#14 0x00007f05c8a23cdd in QQmlBinding::evaluate(bool*) () at /usr/lib64/libQt6Qml.so.6
#15 0x00007f05c8a28938 in QQmlBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) () at /usr/lib64/libQt6Qml.so.6
#16 0x00007f05c8a4af73 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) () at /usr/lib64/libQt6Qml.so.6
#17 0x00007f05c898ec97 in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) () at /usr/lib64/libQt6Qml.so.6
#18 0x00007f05c8a27c4d in QQmlComponentPrivate::complete(QQmlEnginePrivate*, QQmlComponentPrivate::ConstructionState*) () at /usr/lib64/libQt6Qml.so.6
#19 0x00007f05c8a54cab in QQmlComponentPrivate::completeCreate() () at /usr/lib64/libQt6Qml.so.6
#20 0x00007f05ca3b5b0a in PlasmaQuick::SharedQmlEngine::completeInitialization(QHash<QString, QVariant> const&) () at /usr/lib64/libPlasmaQuick.so.6
#21 0x00007f05ca39979f in PlasmaQuick::AppletQuickItem::itemForApplet(Plasma::Applet*) () at /usr/lib64/libPlasmaQuick.so.6
#22 0x00007f05ca3c8659 in ??? () at /usr/lib64/libPlasmaQuick.so.6
#23 0x00007f05c898f522 in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) () at /usr/lib64/libQt6Qml.so.6
#24 0x00007f05c8a27c4d in QQmlComponentPrivate::complete(QQmlEnginePrivate*, QQmlComponentPrivate::ConstructionState*) () at /usr/lib64/libQt6Qml.so.6
#25 0x00007f05c8a54cab in QQmlComponentPrivate::completeCreate() () at /usr/lib64/libQt6Qml.so.6
#26 0x00007f05ca3b5b0a in PlasmaQuick::SharedQmlEngine::completeInitialization(QHash<QString, QVariant> const&) () at /usr/lib64/libPlasmaQuick.so.6
#27 0x00007f05ca39979f in PlasmaQuick::AppletQuickItem::itemForApplet(Plasma::Applet*) () at /usr/lib64/libPlasmaQuick.so.6
#28 0x00007f05ca3ae639 in ??? () at /usr/lib64/libPlasmaQuick.so.6
#29 0x000055dc0e5fd137 in ??? ()
#30 0x00007f05c7cdeb35 in ??? () at /usr/lib64/libQt6Core.so.6
#31 0x00007f05c7c9cfee in QTimer::timeout(QTimer::QPrivateSignal) () at /usr/lib64/libQt6Core.so.6
#32 0x00007f05c7c7d556 in QObject::event(QEvent*) () at /usr/lib64/libQt6Core.so.6
#33 0x00007f05c9d1d839 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6
#34 0x00007f05c7cf5298 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt6Core.so.6
#35 0x00007f05c7c01b6b in QTimerInfoList::activateTimers() () at /usr/lib64/libQt6Core.so.6
#36 0x00007f05c7ac18b1 in ??? () at /usr/lib64/libQt6Core.so.6
#37 0x00007f05c67207a2 in ??? () at /usr/lib64/libglib-2.0.so.0
#38 0x00007f05c6723a97 in ??? () at /usr/lib64/libglib-2.0.so.0
#39 0x00007f05c67240f0 in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#40 0x00007f05c7ac1ab1 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6
#41 0x00007f05c7d209fa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6
#42 0x00007f05c7d20bb7 in QCoreApplication::exec() () at /usr/lib64/libQt6Core.so.6
#43 0x000055dc0e5be7b0 in ??? ()
#44 0x00007f05c746b2f0 in ??? () at /usr/lib64/libc.so.6
#45 0x00007f05c746b3a9 in __libc_start_main () at /usr/lib64/libc.so.6
#46 0x000055dc0e5bec55 in ??? ()


And this is with LTO and debug symbols/source code:
Code:
Thread 1 (Thread 0x7f0b660da9c0 (LWP 1337)):
[KCrash Handler]
#6  0x00007f0b6cae4925 in QQmlData::wasDeleted (priv=0x200000001) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmldata_p.h:305
#7  0x00007f0b6cae554c in QQmlData::wasDeleted (object=0x562dc14157e0) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmldata_p.h:318
#8  QV4::QObjectWrapper::wrap (engine=0x562dc12d6040, object=0x562dc14157e0) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4qobjectwrapper_p.h:233
#9  0x00007f0b6cc69d62 in QV4::loadProperty (v4=<optimized out>, v4@entry=0x562dc12d6040, wrapper=<optimized out>, wrapper@entry=0x7f0afbe95420, object=<optimized out>, property=...) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4qobjectwrapper.cpp:134
#10 0x00007f0b6cc6a825 in QV4::QObjectWrapper::getProperty (engine=engine@entry=0x562dc12d6040, wrapper=wrapper@entry=0x7f0afbe95420, object=<optimized out>, object@entry=0x562dc141cb60, property=property@entry=0x562dc3286cc0, flags=flags@entry=...) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4qobjectwrapper.cpp:391
#11 0x00007f0b6cc6b518 in QV4::QObjectWrapper::getQmlProperty (engine=engine@entry=0x562dc12d6040, qmlContext=..., wrapper=0x7f0afbe95420, object=object@entry=0x562dc141cb60, name=name@entry=0x7f0b383b85a8, flags=..., flags@entry=..., hasProperty=0x0, property=0x0) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4qobjectwrapper.cpp:519
#12 0x00007f0b6cdba4a2 in QV4::QQmlTypeWrapper::virtualGet (m=m@entry=0x7f0b383b8598, id=..., receiver=receiver@entry=0x7f0b383b8598, hasProperty=hasProperty@entry=0x0) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmltypewrapper_p.h:65
#13 0x00007f0b6cc16505 in QV4::Object::get (this=this@entry=0x7f0b383b8598, name=name@entry=0x7f0b383b85a0, hasProperty=hasProperty@entry=0x0, receiver=0x7f0b383b8598, receiver@entry=0x0) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4object_p.h:271
#14 0x00007f0b6cc407a9 in QV4::Lookup::getterFallback (l=<optimized out>, engine=0x562dc12d6040, object=<optimized out>) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4lookup.cpp:203
#15 0x00007f0b6cd94d04 in QV4::Moth::VME::interpret (frame=frame@entry=0x7ffce5f56630, engine=engine@entry=0x562dc12d6040, code=0x7f0aaf0c84e0 "<-N\b\022K\030\t\264.\001\t\030\006\002") at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4vme_moth.cpp:674
#16 0x00007f0b6cd994df in QV4::Moth::VME::exec (frame=frame@entry=0x7ffce5f56630, engine=engine@entry=0x562dc12d6040) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4vme_moth.cpp:487
#17 0x00007f0b6cc927e3 in QV4::doCall (self=0x562dc32784c0, thisObject=0x7f0b383b8500, argv=argv@entry=0x7f0b383b8518, argc=0, context=<optimized out>) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4function.cpp:54
#18 0x00007f0b6ccac324 in QV4::Function::call (this=this@entry=0x562dc32784c0, thisObject=thisObject@entry=0x7f0b383b8500, argv=argv@entry=0x7f0b383b8518, argc=0, context=<optimized out>) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/jsruntime/qv4function.cpp:79
#19 0x00007f0b6cbec208 in QQmlJavaScriptExpression::evaluate (this=this@entry=0x562dc3295d70, callData=0x7f0b383b84e8, isUndefined=isUndefined@entry=0x7ffce5f56880) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmljavascriptexpression.cpp:238
#20 0x00007f0b6cbec347 in QQmlBinding::evaluate (this=this@entry=0x562dc3295d70, isUndefined=isUndefined@entry=0x7ffce5f56880) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlbinding.cpp:188
#21 0x00007f0b6cbeea15 in QQmlBinding::doUpdate (this=0x562dc3295d70, watcher=..., flags=..., scope=...) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlbinding.cpp:699
#22 0x00007f0b6cbfd11f in QQmlBinding::update (this=this@entry=0x562dc3295d70, flags=flags@entry=...) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlbinding.cpp:164
#23 0x00007f0b6cbfd2a9 in QQmlBinding::setEnabled (this=0x562dc3295d70, e=<optimized out>, flags=...) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlbinding.cpp:619
#24 0x00007f0b6cb6564f in QQmlObjectCreator::finalize (this=0x562dc3293330, interrupt=...) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlobjectcreator.cpp:1508
#25 0x00007f0b6cbedc22 in QQmlComponentPrivate::complete (enginePriv=0x562dc12adef0, state=state@entry=0x562dc3248548) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlcomponent.cpp:1172
#26 0x00007f0b6cc06fca in QQmlComponentPrivate::completeCreate (this=0x562dc3248490) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlcomponent.cpp:1277
#27 0x00007f0b6cc06ff1 in QQmlComponent::completeCreate (this=<optimized out>) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlcomponent.cpp:1255
#28 0x00007f0b6e336d2a in PlasmaQuick::SharedQmlEngine::completeInitialization (this=0x562dc3292a20, initialProperties=<optimized out>) at /usr/src/debug/kde-plasma/libplasma-6.1.5/libplasma-6.1.5/src/plasmaquick/sharedqmlengine.cpp:239
#29 0x00007f0b6e319669 in PlasmaQuick::AppletQuickItem::itemForApplet (applet=<optimized out>) at /usr/include/qt6/QtCore/qhash.h:836
#30 0x00007f0b6e3456ca in ContainmentItem::init (this=0x562dc2529cf0) at /usr/src/debug/kde-plasma/libplasma-6.1.5/libplasma-6.1.5/src/plasmaquick/plasmoid/containmentitem.cpp:78
#31 0x00007f0b6e30ea29 in PlasmaQuick::AppletQuickItem::componentComplete (this=0x562dc2529cf0) at /usr/src/debug/kde-plasma/libplasma-6.1.5/libplasma-6.1.5/src/plasmaquick/appletquickitem.cpp:760
#32 0x00007f0b6cb65938 in QQmlObjectCreator::finalize (this=0x562dc24bfbc0, interrupt=...) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlobjectcreator.cpp:1567
#33 0x00007f0b6cbedc22 in QQmlComponentPrivate::complete (enginePriv=0x562dc12adef0, state=state@entry=0x562dc24f1ae8) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlcomponent.cpp:1172
#34 0x00007f0b6cc06fca in QQmlComponentPrivate::completeCreate (this=0x562dc24f1a30) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlcomponent.cpp:1277
#35 0x00007f0b6cc06ff1 in QQmlComponent::completeCreate (this=<optimized out>) at /usr/src/debug/dev-qt/qtdeclarative-6.7.2/qtdeclarative-everywhere-src-6.7.2/src/qml/qml/qqmlcomponent.cpp:1255
#36 0x00007f0b6e336d2a in PlasmaQuick::SharedQmlEngine::completeInitialization (this=0x562dc25045e0, initialProperties=<optimized out>) at /usr/src/debug/kde-plasma/libplasma-6.1.5/libplasma-6.1.5/src/plasmaquick/sharedqmlengine.cpp:239
#37 0x00007f0b6e319669 in PlasmaQuick::AppletQuickItem::itemForApplet (applet=<optimized out>) at /usr/include/qt6/QtCore/qhash.h:836
#38 0x00007f0b6e32c899 in PlasmaQuick::ContainmentViewPrivate::setContainment (this=0x7f0b50003260, cont=cont@entry=0x562dc114ae20) at /usr/src/debug/kde-plasma/libplasma-6.1.5/libplasma-6.1.5/src/plasmaquick/containmentview.cpp:113
#39 0x00007f0b6e32cafd in PlasmaQuick::ContainmentView::setContainment (this=this@entry=0x562dc2489950, cont=cont@entry=0x562dc114ae20) at /usr/src/debug/kde-plasma/libplasma-6.1.5/libplasma-6.1.5/src/plasmaquick/containmentview.cpp:260
#40 0x0000562dbf3c3f07 in ShellCorona::createWaitingPanels (this=0x562dc0d10a70) at /usr/src/debug/kde-plasma/plasma-workspace-6.1.5-r2/plasma-workspace-6.1.5/shell/shellcorona.cpp:1544
#41 0x00007f0b6bc66e0d in QtPrivate::QSlotObjectBase::call (a=0x7ffce5f577c0, r=0x562dc0d10a70, this=0x562dc1226cc0) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qobjectdefs_impl.h:469
#42 doActivate<false> (sender=0x562dc0d10b80, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qobject.cpp:4086
#43 0x00007f0b6bc28684 in QMetaObject::activate (sender=sender@entry=0x562dc0d10b80, m=m@entry=0x7f0b6bf6e440 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7ffce5f577c0) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qobject.cpp:4146
#44 0x00007f0b6bc28cb6 in QTimer::timeout (this=this@entry=0x562dc0d10b80, _t1=...) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2_build/src/corelib/Core_autogen/include/moc_qtimer.cpp:224
#45 0x00007f0b6bc43a2f in QTimer::timerEvent (this=0x562dc0d10b80, e=<optimized out>) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qtimer.cpp:258
#46 0x00007f0b6bc13458 in QObject::event (this=0x562dc0d10b80, e=0x7ffce5f57aa0) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qobject.cpp:1427
#47 0x00007f0b6dc3453f in QApplicationPrivate::notify_helper (this=this@entry=0x562dc0bb4c80, receiver=receiver@entry=0x562dc0d10b80, e=e@entry=0x7ffce5f57aa0) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/widgets/kernel/qapplication.cpp:3287
#48 0x00007f0b6dc360ab in QApplication::notify (this=0x7ffce5f57df0, receiver=0x562dc0d10b80, e=0x7ffce5f57aa0) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/widgets/kernel/qapplication.cpp:3238
#49 0x00007f0b6bc90c5c in QCoreApplication::notifyInternal2 (receiver=0x562dc0d10b80, event=event@entry=0x7ffce5f57aa0) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qcoreapplication.cpp:1142
#50 0x00007f0b6bc90ced in QCoreApplication::sendEvent (receiver=<optimized out>, event=event@entry=0x7ffce5f57aa0) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qcoreapplication.cpp:1583
#51 0x00007f0b6bba2cf8 in QTimerInfoList::activateTimers (this=this@entry=0x562dc0c73b20) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qtimerinfo_unix.cpp:434
#52 0x00007f0b6ba91dad in timerSourceDispatch (source=source@entry=0x562dc0c73ac0) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qeventdispatcher_glib.cpp:150
#53 0x00007f0b6a88692d in g_main_dispatch (context=0x7f0b60000ef0) at ../glib-2.78.6/glib/gmain.c:3476
#54 0x00007f0b6a8869ea in g_main_context_dispatch_unlocked (context=context@entry=0x7f0b60000ef0) at ../glib-2.78.6/glib/gmain.c:4284
#55 0x00007f0b6a88d430 in g_main_context_iterate_unlocked (context=context@entry=0x7f0b60000ef0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib-2.78.6/glib/gmain.c:4349
#56 0x00007f0b6a88d4bb in g_main_context_iteration (context=0x7f0b60000ef0, may_block=1) at ../glib-2.78.6/glib/gmain.c:4414
#57 0x00007f0b6ba920d9 in QEventDispatcherGlib::processEvents (this=0x562dc0bcb870, flags=...) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qeventdispatcher_glib.cpp:394
#58 0x00007f0b6c6aa4ea in QPAEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/gui/platform/unix/qeventdispatcher_glib.cpp:87
#59 0x00007f0b6bc7f2bd in QEventLoop::processEvents (this=this@entry=0x7ffce5f57cf0, flags=..., flags@entry=...) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/kernel/qeventloop.cpp:100
#60 0x00007f0b6bca06d0 in QEventLoop::exec (this=this@entry=0x7ffce5f57cf0, flags=flags@entry=...) at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/global/qflags.h:34
#61 0x00007f0b6bca0806 in QCoreApplication::exec () at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/corelib/global/qflags.h:74
#62 0x00007f0b6c344878 in QGuiApplication::exec () at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/gui/kernel/qguiapplication.cpp:1926
#63 0x00007f0b6dbd552b in QApplication::exec () at /usr/src/debug/dev-qt/qtbase-6.7.2-r4/qtbase-everywhere-src-6.7.2/src/widgets/kernel/qapplication.cpp:2555
#64 0x0000562dbf3857b0 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kde-plasma/plasma-workspace-6.1.5-r2/plasma-workspace-6.1.5/shell/main.cpp:188


So it worked for plasma, because now there are no more ???, there are line numbers referencing the source code and there are a lot more method names. How helpful this is? Idk.

[Administrator edit: changed [quote] tags to [code] tags to preserve output layout. -Hu]
Back to top
View user's profile Send private message
shadowfly
n00b
n00b


Joined: 21 Feb 2024
Posts: 18

PostPosted: Sun Oct 20, 2024 7:00 pm    Post subject: Reply with quote

I forgot, this is with debug symbols and sources for kde-plasma/plasma-meta, kde-plasma/plasma-workspace and sys-libs/glibc

Code:
#0  0x00007f05c74d38ec in ??? () at /usr/lib64/libc.so.6
#1  0x00007f05c7481856 in raise () at /usr/lib64/libc.so.6
#2  0x00007f05ca2e064c in KCrash::defaultCrashHandler(int) () at /usr/lib64/libKF6Crash.so.6
#3  0x00007f05c7481900 in <signal handler called> () at /usr/lib64/libc.so.6
#4  0x00007f05c891a8d2 in QV4::QObjectWrapper::wrap(QV4::ExecutionEngine*, QObject*) () at /usr/lib64/libQt6Qml.so.6
#5  0x00007f05c8abe2f0 in ??? () at /usr/lib64/libQt6Qml.so.6
#6  0x00007f05c8ac0e4a in QV4::QObjectWrapper::getQmlProperty(QV4::ExecutionEngine*, QQmlRefPointer<QQmlContextData> const&, QV4::Heap::Object*, QObject*, QV4::String*, QFlags<QV4::QObjectWrapper::Flag>, bool*, QQmlPropertyData const**) () at /usr/lib64/libQt6Qml.so.6
#7  0x00007f05c8c740be in QV4::QQmlTypeWrapper::virtualGet(QV4::Managed const*, QV4::PropertyKey, QV4::Value const*, bool*) () at /usr/lib64/libQt6Qml.so.6
#8  0x00007f05c8a91879 in QV4::Lookup::getterFallback(QV4::Lookup*, QV4::ExecutionEngine*, QV4::Value const&) () at /usr/lib64/libQt6Qml.so.6
#9  0x00007f05c8c7237e in QV4::QQmlTypeWrapper::virtualResolveLookupGetter(QV4::Object const*, QV4::ExecutionEngine*, QV4::Lookup*) () at /usr/lib64/libQt6Qml.so.6
#10 0x00007f05c8c44136 in ??? () at /usr/lib64/libQt6Qml.so.6
#11 0x00007f05c8c4833f in ??? () at /usr/lib64/libQt6Qml.so.6
#12 0x00007f05c8aed78e in ??? () at /usr/lib64/libQt6Qml.so.6
#13 0x00007f05c8a239fa in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () at /usr/lib64/libQt6Qml.so.6
#14 0x00007f05c8a23cdd in QQmlBinding::evaluate(bool*) () at /usr/lib64/libQt6Qml.so.6
#15 0x00007f05c8a28938 in QQmlBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) () at /usr/lib64/libQt6Qml.so.6
#16 0x00007f05c8a4af73 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) () at /usr/lib64/libQt6Qml.so.6
#17 0x00007f05c898ec97 in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) () at /usr/lib64/libQt6Qml.so.6
#18 0x00007f05c8a27c4d in QQmlComponentPrivate::complete(QQmlEnginePrivate*, QQmlComponentPrivate::ConstructionState*) () at /usr/lib64/libQt6Qml.so.6
#19 0x00007f05c8a54cab in QQmlComponentPrivate::completeCreate() () at /usr/lib64/libQt6Qml.so.6
#20 0x00007f05ca3b5b0a in PlasmaQuick::SharedQmlEngine::completeInitialization(QHash<QString, QVariant> const&) () at /usr/lib64/libPlasmaQuick.so.6
#21 0x00007f05ca39979f in PlasmaQuick::AppletQuickItem::itemForApplet(Plasma::Applet*) () at /usr/lib64/libPlasmaQuick.so.6
#22 0x00007f05ca3c8659 in ??? () at /usr/lib64/libPlasmaQuick.so.6
#23 0x00007f05c898f522 in QQmlObjectCreator::finalize(QQmlInstantiationInterrupt&) () at /usr/lib64/libQt6Qml.so.6
#24 0x00007f05c8a27c4d in QQmlComponentPrivate::complete(QQmlEnginePrivate*, QQmlComponentPrivate::ConstructionState*) () at /usr/lib64/libQt6Qml.so.6
#25 0x00007f05c8a54cab in QQmlComponentPrivate::completeCreate() () at /usr/lib64/libQt6Qml.so.6
#26 0x00007f05ca3b5b0a in PlasmaQuick::SharedQmlEngine::completeInitialization(QHash<QString, QVariant> const&) () at /usr/lib64/libPlasmaQuick.so.6
#27 0x00007f05ca39979f in PlasmaQuick::AppletQuickItem::itemForApplet(Plasma::Applet*) () at /usr/lib64/libPlasmaQuick.so.6
#28 0x00007f05ca3ae639 in ??? () at /usr/lib64/libPlasmaQuick.so.6
#29 0x000055dc0e5fd137 in ShellCorona::createWaitingPanels (this=0x55dc0f87c450) at /usr/src/debug/kde-plasma/plasma-workspace-6.1.4-r1/plasma-workspace-6.1.4/shell/shellcorona.cpp:1544
#30 0x00007f05c7cdeb35 in ??? () at /usr/lib64/libQt6Core.so.6
#31 0x00007f05c7c9cfee in QTimer::timeout(QTimer::QPrivateSignal) () at /usr/lib64/libQt6Core.so.6
#32 0x00007f05c7c7d556 in QObject::event(QEvent*) () at /usr/lib64/libQt6Core.so.6
#33 0x00007f05c9d1d839 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt6Widgets.so.6
#34 0x00007f05c7cf5298 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt6Core.so.6
#35 0x00007f05c7c01b6b in QTimerInfoList::activateTimers() () at /usr/lib64/libQt6Core.so.6
#36 0x00007f05c7ac18b1 in ??? () at /usr/lib64/libQt6Core.so.6
#37 0x00007f05c67207a2 in ??? () at /usr/lib64/libglib-2.0.so.0
#38 0x00007f05c6723a97 in ??? () at /usr/lib64/libglib-2.0.so.0
#39 0x00007f05c67240f0 in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#40 0x00007f05c7ac1ab1 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6
#41 0x00007f05c7d209fa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt6Core.so.6
#42 0x00007f05c7d20bb7 in QCoreApplication::exec() () at /usr/lib64/libQt6Core.so.6
#43 0x000055dc0e5be7b0 in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/kde-plasma/plasma-workspace-6.1.4-r1/plasma-workspace-6.1.4/shell/main.cpp:188


[Administrator edit: changed [quote] tags to [code] tags to preserve output layout. -Hu]
Back to top
View user's profile Send private message
Hu
Administrator
Administrator


Joined: 06 Mar 2007
Posts: 22532

PostPosted: Sun Oct 20, 2024 7:35 pm    Post subject: Reply with quote

logrusx wrote:
Debug symbols also degrade performance.
I think this is incorrect. Do you have a source for this? Debug symbols will definitely slow down the compilation process because of the extra work that the compiler must do to create them, but the resulting program should have the same code whether or not debug symbols were generated.
logrusx wrote:
One does not usually enable debug symbols system wide either, especially when the problem is in higher level packages.
True, though this is mainly because of the impracticality of generating and storing that much extra data.
logrusx wrote:
I doubt debug symbols were even remotely useful to diagnose your issue with Plasma.
It depends on the failure. If the failure is a crash that generates a core file, and debug symbols are generated and stored properly, they can make the difference between a bug report that is handled easily versus one that is rejected out of hand.
shadowfly wrote:
I definitely don't know what LTO is, only that it is supposed to make programs run a tiny bit faster.
LTO is Link Time Optimization. It lets the compiler perform optimizations that can only be identified when the whole program is visible at once. To maintain a consistent ABI, the compiler is normally confined to making optimizations within a single translation unit, and then only optimizations that do not change the observable ABI. LTO lets it treat the entire program as one massive translation unit, allowing inlining, constant propagation, and other optimizations across source files.
shadowfly wrote:
I also don't know what debug symbols are, except that i hoped to get more detailed crash reports at the expense of making everything slower while it is enabled.
Debug symbols allow a debugger to map the generated code back to the source code used to generate it, and in some cases, show the values of variables as the original author would have understood them.
shadowfly wrote:
Initially i enabled debug symbols and sources for kde-plasma/plasma-meta, kde-plasma/plasma-workspace and sys-libs/glibc. However there were still a lot of ??? in the stack traces, so i thought maybe more would be better?
Yes, but there is a difference between "more" and "all." You would have had an easier time if you had reported to us the partially complete trace, and sought our help identifying where you needed to add more symbols. That would have let you add symbols to a few extra packages, instead of rebuilding everything.
Back to top
View user's profile Send private message
logrusx
Advocate
Advocate


Joined: 22 Feb 2018
Posts: 2336

PostPosted: Sun Oct 20, 2024 7:49 pm    Post subject: Reply with quote

First, something I forgot to mention

shadowfly wrote:
someone else (who does have LTO, but does not have debug symbols) confirm the bug.


That's not a bug. That's a consequence of what you've done.

shadowfly wrote:
I definitely don't know what LTO is, only that it is supposed to make programs run a tiny bit faster. I also don't know what debug symbols are, except that i hoped to get more detailed crash reports at the expense of making everything slower while it is enabled.


LTO is Link Time Optimization. The compiler emits additional output which is used during linking phase to optimize the binary. This causes larger memory usage during link time, but I've compiled Chromium with LTO on a quat core with 6GB RAM, later upgraded to the max 8 GB.

What are the optimizations? I don't know exactly. Parallelizing loops whenever possible, inlining stuff, other tricks. I don't think you need it on a Zen 4 Ryzen 7. I used to compile Chromium with LTO just for that tiny bit improvement in performance on the above mentioned CPU, but when I got my current Zen3 Ryzen 7 I realized it brought little to no benefit on the expense of longer and more CPU and memory intensive compilation. I dropped it. However I know LTO is now enabled by default for Chromium and I think Firefox. But those are well tested packages.

LTO can also uncover bugs. I'd not use it system-wide. Especially on things like compilers and stuff, including JVM. That's complicated code with many opportunities for LTO to uncover bugs. Certainly do not use it on packages which are not tested with LTO.

Debug symbols is extra information in the binary code so that you can map the source code onto traces. Not very useful for people like us but unnecessarily eats resources.

shadowfly wrote:
How helpful this is? Idk.


Just what I expected. Those things are for people who know. I don't know this stuff either. I can learn it as I am a programmer but I prefer not to need it at all.

You don't need either of those. They only take up resources. And occasionally cause problems.

Hu wrote:
logrusx wrote:
Debug symbols also degrade performance.
I think this is incorrect. Do you have a source for this? Debug symbols will definitely slow down the compilation process because of the extra work that the compiler must do to create them, but the resulting program should have the same code whether or not debug symbols were generated.


It's funny how you go and correct tags and what not but your whole post is on a single line :)

No, I'm not sure about that. Just a deduction which might be wrong or not entirely true. Maybe they take up more memory. That would indeed degrade performance as more stuff needs to be addressed. Is it significant or even noticeable? I don't know. Not enough knowledge to decide on that and I certainly have no experience with it.

Best Regards,
Georgi
Back to top
View user's profile Send private message
shadowfly
n00b
n00b


Joined: 21 Feb 2024
Posts: 18

PostPosted: Sun Oct 20, 2024 9:56 pm    Post subject: Reply with quote

Thanks for the explanation of LTO. As far as i know now:
  • Regular optimization: Optimization within methods. Maybe within source files.
  • LTO: Optimization between source files.

I hope my brain can remember that.

Hu wrote:
You would have had an easier time if you had reported to us the partially complete trace, and sought our help identifying where you needed to add more symbols.

I definitely try to use this forum as my main resource for asking for help and reporting bugs, but when the crash happened it was saved by DrKonqi, the KDE crash reporter.
DrKonqi asked me to set up a KDE account, which was then used to generate and upload the crash report to KDE automatically. I thought this would be the best option, as DrKonqi maybe saves more information than i could. Later a KDE developer asked me to provide a more detailed crash report with debug symbols. And by then i was already to deep in the KDE bug reporting system to even consider this forum.
Back then i thought that i would have to find all the packages containing the right .so files, and then activate debug symbols for them. So i thought switching on debug for everything would be easier.

As for the LTO and openjdk:
logrusx wrote:
That's not a bug. That's a consequence of what you've done.

I enabled LTO system wide at least half a year ago. I believe openjdk updated multiple times since then, without problems.
A month or so ago i enabled system wide debug and sources, and while i did not read the terminal while it was running, i checked to make sure emerge said 1200/1200 packages upgraded, because it did fail once due to me having the verify use-flag enabled.
If you think that LTO+debug should use more than 64GB or RAM (or maybe should not work at all), then the only explanation could be that i never had LTO+debug, and emerge being buggy.

To find out if that's the case:
  • How can i check if Java was compiled with debug?
  • How can i check if Java was compiled with LTO?
  • How do i downgrade Java to openjdk-17.0.12 without breaking things?


The easiest approach would still be to find someone who does not have debug enabled, but has LTO. Because if they can compile openjdk-17.0.13 (using less than 32GB RAM), that means the problem is either LTO+debug or just my system. In either case it would not be worth it to investigate. If they can not, it would be interesting to know if they can compile openjdk-17.0.12 with LTO. If they can, there is something wrong between those two versions. If they can not, the LTO use flag should be removed from openjdk.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Portage & Programming All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum