Bug 307496 - NetworkManager Setting Editor crashed on saving WLAN connection
Summary: NetworkManager Setting Editor crashed on saving WLAN connection
Status: RESOLVED DUPLICATE of bug 299863
Alias: None
Product: Network Management
Classification: Miscellaneous
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Lamarque V. Souza
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-09-27 19:35 UTC by Anton Samsonov
Modified: 2012-10-01 09:51 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Samsonov 2012-09-27 19:35:56 UTC
Application: plasma-desktop (0.4)
KDE Platform Version: 4.8.5 (4.8.5) "release 2"
Qt Version: 4.8.1
Operating System: Linux 3.4.6-2.10-desktop x86_64
Distribution: "openSUSE 12.2 (x86_64)"

-- Information about the crash:
- What I was doing when the application crashed:

I was setting up a new wireless connection with following settings:

main options:
Connect automatically=yes/no (doesn't matter)
System connection=yes/no (doesn't matter)

Wireless tab:
SSID=... (whether manually entered or obtained from scan) 
Mode=Infrastructure
other options by default

Wireless security tab:
Security=WPA/WPA2 Enterprise
Authentication=TLS
Identity={blank}
User certificate=...pem
CA certificate=...pem
Use system CA certs=no
Subject match={blank}
Alternative subject matches={blank; unchangeable}
Private key=...pem
Private key password=...
Password mode=store (this one really matters!)

all other options by default

The offending option, at least for now, seems to be the "Store password" mode: with it enabled, the manager crashes (sometimes even with screen temporary going black) without saving the connection settings to file; when no password is to be stored, the connection is saved successfully (although later failing on password prompt, sometimes because the prompt window doesn't contain text-input field for user-mode connections, but it's another story).

The strange thing is that it WAS previously possible to save connection with password, whether system-wide or personally for a user; it just broke yesterday or the day before. I didn't do any modification to system configuration these days, just watched movies; the system is freshly installed openSUSE 12.2 x86-64 with configured wired connection and selected desktop theme, no more than that.

Why did I delete the original connection if it was successfully created? Because NetworkManager was either failing to obtain the saved password from KWallet and asking again and again for KWallet's master password and then for private key's password (without actual input field if connection was user's personal), or failing to authenticate with access point (WPA supplicant log didn't give much insight about that), or even failing to detect the presense of access point. The latter means that after once failing the connection, this AP was never more listed in the hotspot list and on the scan diagram, -- until connection was deleted (well, today even this measure stopped to help); of course, this AP is still visible in iwlist output with strongest signal, and the certificates + key work just fine on the very same physical machine in Windows XP. Anyway, I don't think those bugs are related, but their combination makes WLAN quiet unusable for me now.

The crash can be reproduced every time.

-- Backtrace:
Application: Plasma Desktop Shell (kdeinit4), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f10464ed780 (LWP 1590))]

Thread 3 (Thread 0x7f1022ee1700 (LWP 1623)):
#0  0x00007fff4b2c1827 in clock_gettime ()
#1  0x00007f1040ae0f7d in clock_gettime () from /lib64/librt.so.1
#2  0x00007f104509da24 in do_gettime (frac=0x7f1022ee0b58, sec=0x7f1022ee0b50) at tools/qelapsedtimer_unix.cpp:123
#3  qt_gettime () at tools/qelapsedtimer_unix.cpp:140
#4  0x00007f104517015d in QTimerInfoList::updateCurrentTime (this=this@entry=0x7f1014002660) at kernel/qeventdispatcher_unix.cpp:343
#5  0x00007f10451704a3 in QTimerInfoList::timerWait (this=0x7f1014002660, tm=...) at kernel/qeventdispatcher_unix.cpp:450
#6  0x00007f104516f01c in timerSourcePrepareHelper (src=<optimized out>, timeout=0x7f1022ee0c4c) at kernel/qeventdispatcher_glib.cpp:136
#7  0x00007f104516f0c5 in timerSourcePrepare (source=<optimized out>, timeout=<optimized out>) at kernel/qeventdispatcher_glib.cpp:169
#8  0x00007f104082febf in g_main_context_prepare () from /usr/lib64/libglib-2.0.so.0
#9  0x00007f10408305ab in ?? () from /usr/lib64/libglib-2.0.so.0
#10 0x00007f10408307a4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#11 0x00007f104516f956 in QEventDispatcherGlib::processEvents (this=0x7f10140008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#12 0x00007f104514073f in QEventLoop::processEvents (this=this@entry=0x7f1022ee0df0, flags=...) at kernel/qeventloop.cpp:149
#13 0x00007f10451409c8 in QEventLoop::exec (this=0x7f1022ee0df0, flags=...) at kernel/qeventloop.cpp:204
#14 0x00007f1045044e40 in QThread::exec (this=<optimized out>) at thread/qthread.cpp:501
#15 0x00007f104512111f in QInotifyFileSystemWatcherEngine::run (this=0x19351b0) at io/qfilesystemwatcher_inotify.cpp:248
#16 0x00007f1045047ddb in QThreadPrivate::start (arg=0x19351b0) at thread/qthread_unix.cpp:298
#17 0x00007f1044db1e0e in start_thread () from /lib64/libpthread.so.0
#18 0x00007f1043b2b2bd in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f10224a8700 (LWP 1624)):
#0  0x00007f1044db58f4 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f1039d77217 in ?? () from /usr/lib64/libQtScript.so.4
#2  0x00007f1039d77249 in ?? () from /usr/lib64/libQtScript.so.4
#3  0x00007f1044db1e0e in start_thread () from /lib64/libpthread.so.0
#4  0x00007f1043b2b2bd in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f10464ed780 (LWP 1590)):
[KCrash Handler]
#5  0x00007f1043a7bd25 in raise () from /lib64/libc.so.6
#6  0x00007f1043a7d1a8 in abort () from /lib64/libc.so.6
#7  0x00007f103f262175 in _dbus_abort () at dbus-sysdeps.c:94
#8  0x00007f103f258d15 in _dbus_warn_check_failed (format=0x7f103f268560 "arguments to %s() were incorrect, assertion \"%s\" failed in file %s line %d.\nThis is normally a bug in some application using the D-Bus library.\n") at dbus-internals.c:290
#9  0x00007f103f24b376 in dbus_message_iter_append_basic (iter=0x7fff4b2ad4a8, type=<optimized out>, value=0x7fff4b2ad12c) at dbus-message.c:2586
#10 0x00007f1041ebebeb in append (arg=<optimized out>, this=<optimized out>) at qdbusmarshaller.cpp:79
#11 QDBusMarshaller::appendVariantInternal (this=this@entry=0x7fff4b2ad490, arg=...) at qdbusmarshaller.cpp:415
#12 0x00007f1041ebfc7d in append (arg=..., this=0x11d6460) at qdbusmarshaller.cpp:204
#13 QDBusArgument::operator<< (this=0x7fff4b2ad5e0, arg=...) at qdbusargument.cpp:512
#14 0x00007f1024d4010a in operator<< (map=..., arg=...) at /usr/include/QtDBus/qdbusargument.h:341
#15 operator<< <QString, QMap<QString, QVariant> > (map=..., arg=...) at /usr/include/QtDBus/qdbusargument.h:310
#16 qDBusMarshallHelper<QMap<QString, QMap<QString, QVariant> > > (arg=..., t=<optimized out>) at /usr/include/QtDBus/qdbusmetatype.h:72
#17 0x00007f1041ec30b5 in QDBusMetaType::marshall (arg=..., id=<optimized out>, data=0x391ec40) at qdbusmetatype.cpp:265
#18 0x00007f1041ebcd6f in QDBusMarshaller::appendRegisteredType (this=this@entry=0x7fff4b2ad9b0, arg=...) at qdbusmarshaller.cpp:508
#19 0x00007f1041ebe64b in QDBusMarshaller::appendVariantInternal (this=0x7fff4b2ad9b0, arg=...) at qdbusmarshaller.cpp:481
#20 0x00007f1041e99e48 in QDBusMessagePrivate::toDBusMessage (message=..., capabilities=..., error=0x7fff4b2adbc0) at qdbusmessage.cpp:189
#21 0x00007f1041e92e8e in QDBusConnectionPrivate::sendWithReplyAsync (this=0x11b17d0, message=..., timeout=-1) at qdbusintegrator.cpp:1989
#22 0x00007f1041e81800 in QDBusConnection::asyncCall (this=<optimized out>, message=..., timeout=<optimized out>) at qdbusconnection.cpp:628
#23 0x00007f1041e9ee0b in QDBusAbstractInterface::asyncCallWithArgumentList (this=0x1908f50, method=..., args=...) at qdbusabstractinterface.cpp:501
#24 0x00007f1024d725ac in AddConnection (connection=..., this=0x1908f50) at /usr/src/debug/networkmanagement-0.9.0.2/backends/NetworkManager/nm-settingsinterface.h:44
#25 NMDBusSettingsConnectionProvider::addConnection (this=0x38136f0, newConnection=<optimized out>) at /usr/src/debug/networkmanagement-0.9.0.2/backends/NetworkManager/nmdbussettingsconnectionprovider.cpp:399
#26 0x00007f101abf0119 in ManageConnectionWidget::connectionTypeMenuTriggered (this=0x37deec0, action=<optimized out>) at /usr/src/debug/networkmanagement-0.9.0.2/settings/config/manageconnectionwidget.cpp:739
#27 0x00007f1045157f5f in QMetaObject::activate (sender=0x3814560, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff4b2ae0e0) at kernel/qobject.cpp:3556
#28 0x00007f1044704162 in QMenu::triggered(QAction*) () from /usr/lib64/libQtGui.so.4
#29 0x00007f10447056eb in ?? () from /usr/lib64/libQtGui.so.4
#30 0x00007f1045157f5f in QMetaObject::activate (sender=0x1ecfea0, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff4b2ae290) at kernel/qobject.cpp:3556
#31 0x00007f10442cb522 in QAction::triggered(bool) () from /usr/lib64/libQtGui.so.4
#32 0x00007f10442cb710 in QAction::activate(QAction::ActionEvent) () from /usr/lib64/libQtGui.so.4
#33 0x00007f10447043d3 in ?? () from /usr/lib64/libQtGui.so.4
#34 0x00007f104470a6e9 in ?? () from /usr/lib64/libQtGui.so.4
#35 0x00007f1044320e60 in QWidget::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#36 0x00007f104470b99b in QMenu::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#37 0x00007f10442d174c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#38 0x00007f10442d64db in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#39 0x00007f1045eda006 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#40 0x00007f104514173e in QCoreApplication::notifyInternal (this=0x109e9b0, receiver=0x3814560, event=0x7fff4b2aec80) at kernel/qcoreapplication.cpp:876
#41 0x00007f10442d258b in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/libQtGui.so.4
#42 0x00007f104434ca9c in ?? () from /usr/lib64/libQtGui.so.4
#43 0x00007f104434b961 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4
#44 0x00007f1044371c32 in ?? () from /usr/lib64/libQtGui.so.4
#45 0x00007f10408303b5 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#46 0x00007f10408306e8 in ?? () from /usr/lib64/libglib-2.0.so.0
#47 0x00007f10408307a4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#48 0x00007f104516f936 in QEventDispatcherGlib::processEvents (this=0x10b2fd0, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#49 0x00007f10443718ae in ?? () from /usr/lib64/libQtGui.so.4
#50 0x00007f104514073f in QEventLoop::processEvents (this=this@entry=0x7fff4b2af7d0, flags=...) at kernel/qeventloop.cpp:149
#51 0x00007f10451409c8 in QEventLoop::exec (this=0x7fff4b2af7d0, flags=...) at kernel/qeventloop.cpp:204
#52 0x00007f10447083c5 in QMenu::exec(QPoint const&, QAction*) () from /usr/lib64/libQtGui.so.4
#53 0x00007f1044716662 in ?? () from /usr/lib64/libQtGui.so.4
#54 0x00007f1045157f5f in QMetaObject::activate (sender=0x37f4150, m=<optimized out>, local_signal_index=<optimized out>, argv=0x0) at kernel/qobject.cpp:3556
#55 0x00007f1044689bb1 in ?? () from /usr/lib64/libQtGui.so.4
#56 0x00007f1044689d7c in QAbstractButton::mousePressEvent(QMouseEvent*) () from /usr/lib64/libQtGui.so.4
#57 0x00007f1044321303 in QWidget::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#58 0x00007f10442d174c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#59 0x00007f10442d64db in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#60 0x00007f1045eda006 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#61 0x00007f104514173e in QCoreApplication::notifyInternal (this=0x109e9b0, receiver=0x37f4150, event=0x7fff4b2b01c0) at kernel/qcoreapplication.cpp:876
#62 0x00007f10442d258b in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/libQtGui.so.4
#63 0x00007f104434cbd4 in ?? () from /usr/lib64/libQtGui.so.4
#64 0x00007f104434b961 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4
#65 0x00007f1044371c32 in ?? () from /usr/lib64/libQtGui.so.4
#66 0x00007f10408303b5 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#67 0x00007f10408306e8 in ?? () from /usr/lib64/libglib-2.0.so.0
#68 0x00007f10408307a4 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#69 0x00007f104516f936 in QEventDispatcherGlib::processEvents (this=0x10b2fd0, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#70 0x00007f10443718ae in ?? () from /usr/lib64/libQtGui.so.4
#71 0x00007f104514073f in QEventLoop::processEvents (this=this@entry=0x7fff4b2b0d00, flags=...) at kernel/qeventloop.cpp:149
#72 0x00007f10451409c8 in QEventLoop::exec (this=0x7fff4b2b0d00, flags=...) at kernel/qeventloop.cpp:204
#73 0x00007f10451453a8 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148
#74 0x00007f103375b5b5 in kdemain () from /usr/lib64/libkdeinit4_plasma-desktop.so
#75 0x0000000000408892 in _start ()

Possible duplicates by query: bug 300246.

Reported using DrKonqi
Comment 1 Lamarque V. Souza 2012-09-27 21:54:09 UTC
Which libdbus, Qt and Plasma NM versions do you have installed? For the Plasma NM version string please send what you see in "Manage Connections" -> "Other", the package version used by OpenSuse is bogus.
Comment 2 Anton Samsonov 2012-09-28 20:30:40 UTC
(In reply to comment #1)
> Which libdbus, Qt and Plasma NM versions do you have installed?

NM -> "Manage Connections" -> "Other":
0.9.0.2 (nm09 20120507)

YaST2 -> "Software Management":
libdbus-1-3(x86-64) = 1.5.12-4.1.2
libqt4(x86-64) = 4.8.1-2.1.4 / qt = 4.4.0
NetworkManager(x86-64) = 0.9.4.0-5.8.1


Today I finally figured out how to create the connection with stored password, which even authenticates successfully without password re-prompting. The trick was to fill-in the "Identity" field: I entered certificate's Common Name there (myhost.mydom.tld). This is exactly how I was able to connect early, now I recall it.

As for the "Subject match" field, it still behaves strangely: once filled, it can not be emptied, unless the connection is deleted and then created again without filling-in this field. Earlier, I put AP's Common Name here, which resulted in authentication errors, because full "CN=.../DC=.../DC=..." notation was required here. Still wonder, though, why NM asked for private key's password again and again, if the problem was not with password mis/matching. Still confirm that password re-prompting window lacks the text input field, if connection is not system-wide: the window pops up with only a button and a checkbox, so an empty password is considered input by user on proceeding.


Also noticed that /var/log/NetworkManager got several lines of

> has_system_secrets: assertion `setting_name != NULL' failed

when I was adding / editing the connection now.
Comment 3 Lamarque V. Souza 2012-09-30 23:53:54 UTC
the missing password field is a known bug: http://bugs.kde.org/show_bug.cgi?id=299868. I just cannot reproduce it here because I do not have access to any wpa2 enterprise connection.

*** This bug has been marked as a duplicate of bug 299863 ***
Comment 4 Lamarque V. Souza 2012-10-01 00:17:39 UTC
Git commit 8815f26e37afc28c1e92cd0adf0973899fc8d64c by Lamarque V. Souza.
Committed on 01/10/2012 at 02:13.
Pushed by lvsouza into branch 'master'.

Allow empty string in 'Subject Match' and 'Alternative Subject Matches'
fields in wifi WPA2 enterprise dialog.

M  +1    -1    libs/ui/security/peapwidget.cpp
M  +1    -1    libs/ui/security/tlswidget.cpp
M  +1    -1    libs/ui/security/ttlswidget.cpp

http://commits.kde.org/networkmanagement/8815f26e37afc28c1e92cd0adf0973899fc8d64c
Comment 5 Lamarque V. Souza 2012-10-01 00:20:44 UTC
Git commit 0329218c4259397399f94f9dbec5cafee933dd15 by Lamarque V. Souza.
Committed on 01/10/2012 at 02:13.
Pushed by lvsouza into branch 'nm09'.

Allow empty string in 'Subject Match' and 'Alternative Subject Matches'
fields in wifi WPA2 enterprise dialog.
(cherry picked from commit 8815f26e37afc28c1e92cd0adf0973899fc8d64c)

M  +1    -1    libs/ui/security/peapwidget.cpp
M  +1    -1    libs/ui/security/tlswidget.cpp
M  +1    -1    libs/ui/security/ttlswidget.cpp

http://commits.kde.org/networkmanagement/0329218c4259397399f94f9dbec5cafee933dd15
Comment 6 Anton Samsonov 2012-10-01 09:51:42 UTC
(In reply to comment #3)
> The missing password field is a known bug 299868. I just cannot reproduce it here because I do not have access to any WPA2 enterprise connection.

(In reply to comment #4)
> Git commit 8815f26e37afc28c1e92cd0adf0973899fc8d64c: Allow empty string in 'Subject Match' and 'Alternative Subject Matches' fields in wifi WPA2 enterprise dialog.

This is all good, but how about the "Identity" field? According to my observations, this one is the real offender: if it's filled-in, then connection is saved successfully, but if it's left blank, the crash occurs for sure. Actually, this is the first time I ever needed to provide the "Identity" manually: although all systems allow for custom value, it defaults to certificate's "Common Name" if not specified.