Bug 400778

Summary: Energy consumption statistics panel in kinfocenter 5.13.5 was blank
Product: [Applications] kinfocenter Reporter: Matt Fagnani <matt.fagnani>
Component: Energy InformationAssignee: Kai Uwe Broulik <kde>
Status: RESOLVED DUPLICATE    
Severity: normal CC: nate, rdieter
Priority: NOR    
Version: 5.13.5   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: valgrind log for when kinfocenter crashed due to invalid reads
valgrind log for when kinfocenter closed normally
strace kinfocenter output before making any further changes

Description Matt Fagnani 2018-11-07 02:51:23 UTC
SUMMARY

When I click on Energy Information in kinfocenter, the Energy Consumption Statistics title is shown but the panel below it is blank. The journal messages showed the following error messages when that happened.

kinfocenter[1810]: org.kde.kcoreaddons: Error loading plugin "kcm_energyinfo" "The shared library was not found." 
Plugin search paths are ("/usr/lib/qt5/plugins", "/usr/bin") 
The environment variable QT_PLUGIN_PATH might be not correctly set
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'serial' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'model' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'vendor' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'temperature' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'powerSupply' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'energyFullDesign' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'energyFull' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'energy' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'capacity' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'voltage' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'energyRate' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'chargeState' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property 'rechargeable' of null
kinfocenter[1810]: file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/Graph.qml:64: TypeError: Cannot read property 'x' of undefined

echo $QT_PLUGIN_PATH showed an empty line. /usr/lib/qt5/plugins/kcms/kcm_energyinfo.so appeared to be the kcm_energyinfo plugin referred to by the first error. I ran export QT_PLUGIN_PATH=/usr/lib/qt5/plugins:/usr/lib/qt5/plugins/kcms:/usr/bin followed by kinfocenter & in konsole but the Energy Consumption Statistics panel was still blank with the same error messages.

/usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459 is 
var value = currentBattery[modelData.value] 
My computer is a desktop without a battery so that might be why 
currentBattery was null.

/usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/Graph.qml:64 is 
var scaledX = (plot.x - xMin) * plotWidth / (xMax-xMin); in

function scalePoint(plot) {
        var scaledX = (plot.x - xMin) * plotWidth / (xMax-xMin);
        var scaledY = (plot.y - yMin)  * plotHeight / (yMax-yMin);

        return Qt.point(xPadding + scaledX,
            height - yPadding - scaledY);
    }

The plot variable might have been undefined due to currentBattery at /usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459 being null leading to plot.x being undefined. I'm not familiar with this program so I'm just guessing about the reasons the panel wasn't shown. The missing panel and errors occurred each of a few times I tried the steps described. I can provide more information.

STEPS TO REPRODUCE
1. Start kinfocenter on a computer without a battery
2. Click Energy Information
3. 

OBSERVED RESULT
The Energy Information panel was blank.

EXPECTED RESULT
The Energy Information panel is shown.

SOFTWARE VERSIONS
(available in About System)
KDE Plasma Version: 5.13.5
KDE Frameworks Version: 5.51.0
Qt Version: 5.11.1
OS: Fedora 29
Kernel Version: 4.18.17-300.fc29
X server: 1.20.3

ADDITIONAL INFORMATION
The first and last error messages in the first report post of bug 387366 appeared the same as those I saw, but the other error messages were different. The Energy Consumption Statistics panel wasn't shown in bug 387366 as well.
Comment 1 Nate Graham 2018-11-07 19:32:38 UTC

*** This bug has been marked as a duplicate of bug 387366 ***
Comment 2 Matt Fagnani 2018-11-08 02:01:10 UTC
I added the following check of currentBattery being null to /usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml right before line 459
if (currentBattery === null) {
    return "No battery"
}

var value = currentBattery[modelData.value]

I haven't see the errors of the form "file:///usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/main.qml:459: TypeError: Cannot read property * of null" after I made that change, started kinfocenter and clicked on Energy Information. I changed the function scalePoint in /usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/Graph.qml so that if plot was undefined, then scaledX and scaledY weren't calculated and the returned value didn't include those variables.

function scalePoint(plot) {
        
        if (plot === undefined) {
            
            return Qt.point(xPadding, height - yPadding);
        }
        else {
            var scaledX = (plot.x - xMin) * plotWidth / (xMax-xMin);
            var scaledY = (plot.y - yMin)  * plotHeight / (yMax-yMin);

            return Qt.point(xPadding + scaledX,
                height - yPadding - scaledY);
        }
}

I haven't see the error "//usr/share/kpackage/kcms/kcm_energyinfo/contents/ui/Graph.qml:64: TypeError: Cannot read property 'x' of undefined" after I made that change, started kinfocenter and clicked on Energy Information. The Energy Consumption Statistics panel was still blank after those changes. 

I ran strace kinfocenter which showed many statx system calls checking for files named kinfocenter.mo and kinfocenter.js which returned -1 ENOENT (No such file or directory). My language was set to en_CA which was included in the paths being checked for kinfocenter.mo. I noted that /usr/share/locale/en_GB/LC_MESSAGES/kinfocenter.mo was provided by the kinfocenter package using sudo dnf repoquery -l kinfocenter | less, but no such file for en_CA was present. In System Settings > Regional Settings > Language , I set British english. kinfocenter.mo was found as shown when running strace kinfocenter after that

statx(AT_FDCWD, "/usr/share/locale/en_GB/LC_MESSAGES/kcm_energyinfo.mo", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=3138, ...}) = 0 

sudo dnf repoquery --whatprovides *kcm_energyinfo.js showed no package providing kcm_energyinfo.js . I've been unable to find that file elsewhere. The absence of kcm_energyinfo.js might be involved in this issue.

/usr/lib/qt5/plugins/kcms/kcm_energyinfo.so was found after many statx calls that returned No such file or directory errors:
...
statx(AT_FDCWD, "/usr/lib/qt5/plugins/kcms/kcm_energyinfo", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0xbfb0274c) = -1 ENOENT (No such file or directory)
statx(AT_FDCWD, "/usr/lib/qt5/plugins/kcms/kcm_energyinfo.so", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=136888, ...}) = 0
openat(AT_FDCWD, "/usr/lib/qt5/plugins/kcms/kcm_energyinfo.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
...

Later in the strace output 12 statx calls returned -1 ENOENT (No such file or directory) without finding checking for /usr/lib/qt5/plugins/kcms/kcm_energyinfo.so I ran sudo ln /usr/lib/qt5/plugins/kcms/kcm_energyinfo.so /usr/lib/qt5/plugins/kcm_energyinfo.so followed by strace kinfocenter. /usr/lib/qt5/plugins/kcm_energyinfo.so was then found and opened, but the Energy Information was still blank.
...
statx(AT_FDCWD, "/usr/lib/qt5/plugins/kcm_energyinfo.so", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_ALL, stx_attributes=0, stx_mode=S_IFREG|0755, stx_size=136888, ...}) = 0
openat(AT_FDCWD, "/usr/lib/qt5/plugins/kcm_energyinfo.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 15
...

I saw some shmctl calls which were trying to remove shared memory segments returning -1 invalid argument after I clicked on Energy Information such as
shmctl(13402151, IPC_64|IPC_RMID, NULL) = -1 EINVAL (Invalid argument)
I don't know if these might be related to this issue. 

I ran valgrind valgrind --log-file=valgrind_kinfocenter_1.txt kinfocenter
which noted some memory leaks. I installed some more of the qt5 and kf5 debug packages involved in the crash traces and memory leaks many of which involved /usr/lib/libQt5Quick.so.5.11.1 and /usr/lib/libQt5Qml.so.5.11.1 provided by qt5-qtdeclarative. When I ran valgrind --leak-check=yes --log-file=valgrind_kinfocenter_3.txt kinfocenter , then I clicked on Energy Information, and closed kinfocenter I saw a pop up window stating
"Application "kinfocenter" is not responding
You tried to close window "KInfocentre — Info Centre" from application "kinfocenter" (Process ID: 2048) but the application is not responding.
Do you want to terminate this application?
Warning: Terminating the application will close all of its child windows. Any unsaved data will be lost.
Terminate Program kinfocenter
Wait Longer"
After I clicked Wait Longer, the valgrind log showed that kinfocenter crashed due to invalid reads of size 4 and 2 as follows

==2048== Invalid read of size 4
==2048==    at 0x586EBB7: QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent*) (qguiapplication.cpp:2270)
==2048==    by 0x586F0E0: QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) (qguiapplication.cpp:1837)
==2048==    by 0x5844E13: QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qwindowsysteminterface.cpp:1032)
==2048==    by 0xB193E41: QPAEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:70)
==2048==    by 0x6064B6E: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:214)
==2048==    by 0x606D3E1: QCoreApplication::exec() (qcoreapplication.cpp:1336)
==2048==    by 0x5862234: QGuiApplication::exec() (qguiapplication.cpp:1761)
==2048==    by 0x5157D17: QApplication::exec() (qapplication.cpp:2901)
==2048==    by 0x113E64: main (main.cpp:76)
==2048==  Address 0xf09b680 is 0 bytes inside a block of size 44 free'd
==2048==    at 0x4836D85: operator delete(void*, unsigned int) (vg_replace_malloc.c:581)
==2048==    by 0x51B8EA7: QWidgetWindow::~QWidgetWindow() (qwidgetwindow.cpp:166)
==2048==    by 0x518AC59: QWidgetPrivate::deleteTLSysExtra() (qwidget.cpp:1901)
==2048==    by 0x518FDF8: QWidget::destroy(bool, bool) (qwidget.cpp:12453)
==2048==    by 0x519801A: QWidget::~QWidget() (qwidget.cpp:1710)
==2048==    by 0x52C1EC0: QMainWindow::~QMainWindow() (qmainwindow.cpp:389)
==2048==    by 0x4A4A5E2: KMainWindow::~KMainWindow() (in /usr/lib/libKF5XmlGui.so.5.51.0)
==2048==    by 0x4A98418: KXmlGuiWindow::~KXmlGuiWindow() (in /usr/lib/libKF5XmlGui.so.5.51.0)
==2048==    by 0x11435B: KInfoCenter::~KInfoCenter() (infocenter.cpp:93)
==2048==    by 0x1143ED: KInfoCenter::~KInfoCenter() (infocenter.cpp:109)
==2048==    by 0x609177A: QObject::event(QEvent*) (qobject.cpp:1242)
==2048==    by 0x519D66C: QWidget::event(QEvent*) (qwidget.cpp:9347)
==2048==  Block was alloc'd at
==2048==    at 0x4835C89: operator new(unsigned int) (vg_replace_malloc.c:328)
==2048==    by 0x5184C77: QWidgetPrivate::createTLSysExtra() (qwidget.cpp:1538)
==2048==    by 0x518D93B: QWidget::setAttribute(Qt::WidgetAttribute, bool) (qwidget.cpp:11300)
==2048==    by 0x518EABC: QWidget::winId() const (qwidget.cpp:2533)
==2048==    by 0x4A4C14C: KMainWindow::applyMainWindowSettings(KConfigGroup const&) (in /usr/lib/libKF5XmlGui.so.5.51.0)
==2048==    by 0x4A9A841: KXmlGuiWindow::applyMainWindowSettings(KConfigGroup const&) (in /usr/lib/libKF5XmlGui.so.5.51.0)
==2048==    by 0x4A4C2E1: KMainWindow::setAutoSaveSettings(QString const&, bool) (in /usr/lib/libKF5XmlGui.so.5.51.0)
==2048==    by 0x4A9A5E2: KXmlGuiWindow::setupGUI(QSize const&, QFlags<KXmlGuiWindow::StandardWindowOption>, QString const&) (in /usr/lib/libKF5XmlGui.so.5.51.0)
==2048==    by 0x115CB1: KInfoCenter::KInfoCenter() (infocenter.cpp:84)
==2048==    by 0x116E5B: KicApp::KicApp(int&, char**) (main.cpp:64)
==2048==    by 0x113E5A: main (main.cpp:72)
==2048== 
==2048== Thread 3 QDBusConnectionM:
==2048== Invalid read of size 2
==2048==    at 0x60BCFFC: socketNotifierSourceCheck(_GSource*) (qeventdispatcher_glib.cpp:88)
==2048==    by 0x9A552C1: g_main_context_check (gmain.c:3753)
==2048==    by 0x9A558B4: g_main_context_iterate.isra.20 (gmain.c:3917)
==2048==    by 0x9A55A5A: g_main_context_iteration (gmain.c:3981)
==2048==    by 0x60BD15C: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:423)
==2048==    by 0x6064B6E: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:214)
==2048==    by 0x5ECDDD0: QThread::exec() (qthread.cpp:525)
==2048==    by 0x5D3D0CF: QDBusConnectionManager::run() (qdbusconnection.cpp:178)
==2048==    by 0x5ED8908: QThreadPrivate::start(void*) (qthread_unix.cpp:367)
==2048==    by 0x785E5DD: start_thread (pthread_create.c:486)
==2048==    by 0x669E789: clone (clone.S:108)
==2048==  Address 0xccd43b6 is 6 bytes inside a block of size 12 free'd
==2048==    at 0x4836D85: operator delete(void*, unsigned int) (vg_replace_malloc.c:581)
==2048==    by 0x60BD91F: QEventDispatcherGlib::unregisterSocketNotifier(QSocketNotifier*) (qeventdispatcher_glib.cpp:504)
==2048==    by 0x609CD81: QSocketNotifier::setEnabled(bool) (qsocketnotifier.cpp:246)
==2048==    by 0x60BCFF4: socketNotifierSourceCheck(_GSource*) (qeventdispatcher_glib.cpp:88)
==2048==    by 0x9A552C1: g_main_context_check (gmain.c:3753)
==2048==    by 0x9A558B4: g_main_context_iterate.isra.20 (gmain.c:3917)
==2048==    by 0x9A55A5A: g_main_context_iteration (gmain.c:3981)
==2048==    by 0x60BD15C: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:423)
==2048==    by 0x6064B6E: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:214)
==2048==    by 0x5ECDDD0: QThread::exec() (qthread.cpp:525)
==2048==    by 0x5D3D0CF: QDBusConnectionManager::run() (qdbusconnection.cpp:178)
==2048==    by 0x5ED8908: QThreadPrivate::start(void*) (qthread_unix.cpp:367)
==2048==  Block was alloc'd at
==2048==    at 0x4835C89: operator new(unsigned int) (vg_replace_malloc.c:328)
==2048==    by 0x60BD7EC: QEventDispatcherGlib::registerSocketNotifier(QSocketNotifier*) (qeventdispatcher_glib.cpp:460)
==2048==    by 0x609CC75: QSocketNotifier::QSocketNotifier(int, QSocketNotifier::Type, QObject*) (qsocketnotifier.cpp:155)
==2048==    by 0x5D484F8: qDBusAddWatch (qdbusintegrator.cpp:213)
==2048==    by 0x7A2C688: _dbus_watch_list_set_functions (in /usr/lib/libdbus-1.so.3.19.8)
==2048==    by 0x7A10219: dbus_connection_set_watch_functions (in /usr/lib/libdbus-1.so.3.19.8)
==2048==    by 0x5D4B00A: q_dbus_connection_set_watch_functions (qdbus_symbols_p.h:229)
==2048==    by 0x5D4B00A: QDBusConnectionPrivate::setConnection(DBusConnection*, QDBusErrorInternal const&) (qdbusintegrator.cpp:1794)
==2048==    by 0x5D3F6F7: QDBusConnectionManager::executeConnectionRequest(QDBusConnectionManager::ConnectionRequestData*) (qdbusconnection.cpp:289)
==2048==    by 0x608E203: call (qobjectdefs_impl.h:376)
==2048==    by 0x608E203: QMetaCallEvent::placeMetaCall(QObject*) (qobject.cpp:504)
==2048==    by 0x6091752: QObject::event(QEvent*) (qobject.cpp:1251)
==2048==    by 0x5ECDEFA: QThread::event(QEvent*) (qthread.cpp:832)
==2048==    by 0x6065DC1: doNotify(QObject*, QEvent*) (qcoreapplication.cpp:1138)
==2048== 
==2048== Invalid read of size 2
==2048==    at 0x60BCF60: socketNotifierSourceCheck(_GSource*) (qeventdispatcher_glib.cpp:79)
==2048==    by 0x9A552C1: g_main_context_check (gmain.c:3753)
==2048==    by 0x9A558B4: g_main_context_iterate.isra.20 (gmain.c:3917)
==2048==    by 0x9A55A5A: g_main_context_iteration (gmain.c:3981)
==2048==    by 0x60BD15C: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:423)
==2048==    by 0x6064B6E: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:214)
==2048==    by 0x5ECDDD0: QThread::exec() (qthread.cpp:525)
==2048==    by 0x5D3D0CF: QDBusConnectionManager::run() (qdbusconnection.cpp:178)
==2048==    by 0x5ED8908: QThreadPrivate::start(void*) (qthread_unix.cpp:367)
==2048==    by 0x785E5DD: start_thread (pthread_create.c:486)
==2048==    by 0x669E789: clone (clone.S:108)
==2048==  Address 0xccd43b4 is 4 bytes inside a block of size 12 free'd
==2048==    at 0x4836D85: operator delete(void*, unsigned int) (vg_replace_malloc.c:581)
==2048==    by 0x60BD91F: QEventDispatcherGlib::unregisterSocketNotifier(QSocketNotifier*) (qeventdispatcher_glib.cpp:504)
==2048==    by 0x609CD81: QSocketNotifier::setEnabled(bool) (qsocketnotifier.cpp:246)
==2048==    by 0x60BCFF4: socketNotifierSourceCheck(_GSource*) (qeventdispatcher_glib.cpp:88)
==2048==    by 0x9A552C1: g_main_context_check (gmain.c:3753)
==2048==    by 0x9A558B4: g_main_context_iterate.isra.20 (gmain.c:3917)
==2048==    by 0x9A55A5A: g_main_context_iteration (gmain.c:3981)
==2048==    by 0x60BD15C: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (qeventdispatcher_glib.cpp:423)
==2048==    by 0x6064B6E: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (qeventloop.cpp:214)
==2048==    by 0x5ECDDD0: QThread::exec() (qthread.cpp:525)
==2048==    by 0x5D3D0CF: QDBusConnectionManager::run() (qdbusconnection.cpp:178)
==2048==    by 0x5ED8908: QThreadPrivate::start(void*) (qthread_unix.cpp:367)
==2048==  Block was alloc'd at
==2048==    at 0x4835C89: operator new(unsigned int) (vg_replace_malloc.c:328)
==2048==    by 0x60BD7EC: QEventDispatcherGlib::registerSocketNotifier(QSocketNotifier*) (qeventdispatcher_glib.cpp:460)
==2048==    by 0x609CC75: QSocketNotifier::QSocketNotifier(int, QSocketNotifier::Type, QObject*) (qsocketnotifier.cpp:155)
==2048==    by 0x5D484F8: qDBusAddWatch (qdbusintegrator.cpp:213)
==2048==    by 0x7A2C688: _dbus_watch_list_set_functions (in /usr/lib/libdbus-1.so.3.19.8)
==2048==    by 0x7A10219: dbus_connection_set_watch_functions (in /usr/lib/libdbus-1.so.3.19.8)
==2048==    by 0x5D4B00A: q_dbus_connection_set_watch_functions (qdbus_symbols_p.h:229)
==2048==    by 0x5D4B00A: QDBusConnectionPrivate::setConnection(DBusConnection*, QDBusErrorInternal const&) (qdbusintegrator.cpp:1794)
==2048==    by 0x5D3F6F7: QDBusConnectionManager::executeConnectionRequest(QDBusConnectionManager::ConnectionRequestData*) (qdbusconnection.cpp:289)
==2048==    by 0x608E203: call (qobjectdefs_impl.h:376)
==2048==    by 0x608E203: QMetaCallEvent::placeMetaCall(QObject*) (qobject.cpp:504)
==2048==    by 0x6091752: QObject::event(QEvent*) (qobject.cpp:1251)
==2048==    by 0x5ECDEFA: QThread::event(QEvent*) (qthread.cpp:832)
==2048==    by 0x6065DC1: doNotify(QObject*, QEvent*) (qcoreapplication.cpp:1138)

 I ran valgrind --leak-check=yes --log-file=valgrind_kinfocenter_4.txt kinfocenter and then I clicked on Energy Information, and closed kinfocenter I saw the same pop up window, clicked Wait Longer and kinfocenter closed normally. I'll attach some of the valgrind and strace output.
Comment 3 Matt Fagnani 2018-11-08 02:04:03 UTC
Created attachment 116171 [details]
valgrind log for when kinfocenter crashed due to invalid reads
Comment 4 Matt Fagnani 2018-11-08 02:05:10 UTC
Created attachment 116172 [details]
valgrind log for when kinfocenter closed normally
Comment 5 Matt Fagnani 2018-11-08 02:12:42 UTC
Created attachment 116173 [details]
strace kinfocenter output before making any further changes
Comment 6 Matt Fagnani 2018-11-08 02:18:50 UTC
drkonqi showed that valgrind --leak-check=yes --log-file=valgrind_kinfocenter_3.txt kinfocenter crashed due to a segmentation fault with the following trace although the functions shown appear to be mostly from valgrind.

Application: Info Centre (memcheck-x86-linux), signal: Segmentation fault
vgModuleLocal_do_syscall_for_client_WRK () at m_syswrap/syscall-x86-linux.S:127
127		movl	4+FSZ(%esp), %ebx
[Current thread is 1 (LWP 2048)]

Thread 3 (LWP 2059):
#0  0x5804db42 in do_syscall_WRK ()
#1  0x5804dd6b in vgPlain_do_syscall (sysno=4, a1=1029, a2=1924636134, a3=1, a4=0, a5=0, a6=0, a7=0, a8=0) at m_syscall.c:928
#2  0x5803b707 in vgPlain_write (fd=1029, buf=0x72b79de6, count=1) at m_libcfile.c:224
#3  0x580dc3a5 in vgModuleLocal_sema_up (sema=0x61e2ed88, as_LL=0 '\000') at m_scheduler/sema.c:144
#4  0x580dbfff in release_sched_lock (p=0x61e2ed88) at m_scheduler/sched-lock-generic.c:76
#5  0x5808fe9d in vgPlain_release_BigLock_LL (who=0x0) at m_scheduler/scheduler.c:412
#6  vgPlain_release_BigLock (tid=4, sleepstate=VgTs_WaitSys, who=0x581a7bc0 "VG_(client_syscall)[async]") at m_scheduler/scheduler.c:388
#7  0x58092f73 in vgPlain_client_syscall (tid=<optimized out>, trc=<optimized out>) at m_syswrap/syswrap-main.c:1956
#8  0x5808f9b9 in handle_syscall (tid=tid@entry=4, trc=77) at m_scheduler/scheduler.c:1176
#9  0x58090ff7 in vgPlain_scheduler (tid=<optimized out>) at m_scheduler/scheduler.c:1498
#10 0x580dc698 in thread_wrapper (tidW=4) at m_syswrap/syswrap-linux.c:103
#11 run_a_thread_NORETURN (tidW=4) at m_syswrap/syswrap-linux.c:156
#12 0x580dc8cf in vgModuleLocal_start_thread_NORETURN (arg=0x61e34120) at m_syswrap/syswrap-linux.c:320
#13 0x580a0a3f in do_syscall_clone_x86_linux ()
#14 0xdeadbeef in ?? ()
#15 0xdeadbeef in ?? ()
#16 0xdeadbeef in ?? ()
#17 0xdeadbeef in ?? ()
#18 0xdeadbeef in ?? ()
#19 0xdeadbeef in ?? ()
#20 0xdeadbeef in ?? ()
#21 0xdeadbeef in ?? ()
#22 0xdeadbeef in ?? ()
#23 0x00000000 in ?? ()

Thread 2 (LWP 2052):
#1  0x00001cb3 in ?? ()
#2  0x0c7b4e30 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Thread 1 (LWP 2048):
#1  0x58092f8c in do_syscall_for_client (syscall_mask=0x62ca8e48, tst=0xffffff8c, syscallno=162) at m_syswrap/syswrap-main.c:1964
#2  vgPlain_client_syscall (tid=<optimized out>, trc=<optimized out>) at m_syswrap/syswrap-main.c:1964
#3  0x5808f9b9 in handle_syscall (tid=tid@entry=1, trc=77) at m_scheduler/scheduler.c:1176
#4  0x58090ff7 in vgPlain_scheduler (tid=<optimized out>) at m_scheduler/scheduler.c:1498
#5  0x580dc698 in thread_wrapper (tidW=1) at m_syswrap/syswrap-linux.c:103
#6  run_a_thread_NORETURN (tidW=1) at m_syswrap/syswrap-linux.c:156
#7  0x00000000 in ?? ()
[Inferior 1 (process 2048) detached]
Comment 7 Matt Fagnani 2018-11-11 18:48:20 UTC
kinfocenter 5.14.3 still shows the blank Energy Consumption Statistics after I updated to Plasma 5.14.3 and KF5 5.52.0. I saw three error messages in addition to those I mentioned before relating to kirigami in the journal right after clicking on Energy Information.

kinfocenter[4755]: file:///usr/lib/qt5/qml/org/kde/kirigami.2/templates/AbstractApplicationHeader.qml:113: TypeError: Cannot read property 'globalToolBarItem' of null
kinfocenter[4755]: file:///usr/lib/qt5/qml/org/kde/kirigami.2/private/globaltoolbar/BreadcrumbControl.qml:62:59: Unable to assign QQuickItem_QML_102 to Page_QMLTYPE_40
kinfocenter[4755]: file:///usr/lib/qt5/qml/org/kde/kirigami.2/templates/AbstractApplicationHeader.qml:46:25: Unable to assign QQuickItem_QML_102 to Page_QMLTYPE_40

/usr/lib/qt5/qml/org/kde/kirigami.2/templates/AbstractApplicationHeader.qml:113
is target: root.page.globalToolBarItem. I guess the first error indicates that root.page and maybe root might be null due to the panel being blank. 

/usr/lib/qt5/qml/org/kde/kirigami.2/private/globaltoolbar/BreadcrumbControl.qml:62 is readonly property Kirigami.Page page: pageRow.get(modelData) 

/usr/lib/qt5/qml/org/kde/kirigami.2/templates/AbstractApplicationHeader.qml:46 is property Page page: pageRow.currentItem

Checking if root.page or root are null or pageRow is undefined or null before that or resolving the blank panel issue might avoid those errors.