DebuggingNetworkManager
2474
Comment:
|
6820
Need sudo to unload; add command to reload (I think it's right, it's what I did anyway).
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
=== A Testcase === | <<Include(Debugging/Header)>> ||<tablestyle="float:right; font-size: 0.9em; width:30%; background:#F1F1ED; background-image: url('https://librarian.launchpad.net/1812570/bugsquad.png'); background-repeat: no-repeat; background-position: 98% 0.5ex; margin: 0 0 1em 1em; padding: 0.5em;"><<TableOfContents>>|| == Bug Summary == If a network-manager bug report is about not being able to connect the title or summary should be in the format: "[CHIPSET] cannot connect to (ENCRYPT_METHOD)" where the CHIPSET is the wireless driver used and ENCRYPT_METHOD is the encryption method used by your wireless network. == A Testcase == |
Line 10: | Line 20: |
To unload your driver {{{ rmmod -r DRIVER }}}. Then load the driver and start NetworkManager: |
To unload your driver {{{ sudo modprobe -r DRIVER }}}. Then load the driver {{{ sudo modprobe DRIVER }}} and start NetworkManager: |
Line 23: | Line 33: |
tail -n0 /var/log/syslog > /tmp/syslog }}} |
tail -n0 -f /var/log/syslog > /tmp/syslog }}} and to stop capturing do Ctrl-C (you will have to type your other commands in an other window or tab) |
Line 37: | Line 47: |
=== Driver Logs === |
=== Serial Log (Mobile Broadband) === {{{ # become root sudo su # stop NM /etc/init.d/NetworkManager stop # start with serial log and tee it in a log file NM_SERIAL_DEBUG=1 NetworkManager --no-daemon 2>&1 | tee /tmp/nm-serial.txt }}} ... reproduce and attach the nm-serial.txt == Debugging Crashes == To install debug symbols, add the following line to your {{{/etc/apt/sources.list}}} {{{ deb http://ddebs.ubuntu.com/~ubuntu-archive/ddebs/ hardy main universe }}} or {{{ deb http://ddebs.ubuntu.com/~ubuntu-archive/ddebs/ intrepid main universe }}} Then install the appropriate dbgsym packages: {{{ sudo apt-get update sudo apt-get install network-manager-dbgsym libnm-util0-dbgsym libnm-glib0-dbgsym libglib2.0-0-dbgsym }}} Then stop NetworkManager (hardy): {{{ sudo /etc/dbus-1/event.d/25NetworkManager stop }}} or stop NetworkManager (intrepid): {{{ sudo /etc/init.d/NetworkManager stop }}} Run NetworkManager in a debugger {{{ sudo gdb /usr/sbin/NetworkManager ... (gdb) run --no-daemon }}} Once it crashes get a backtrace {{{ (gdb) bt ... (gdb) bt full ... (gdb) thread apply all bt full ... }}} and attach the backtrace above together with your {{{/var/log/syslog}}} to the bug. == Driver Logs == |
Line 49: | Line 124: |
# either durint module load: modprobe ipw{2100,2200,3945} debug=1 debug_level=65535 |
# either during module load: modprobe ipw{2100,2200,3945} debug=65535 |
Line 81: | Line 156: |
== Bug Tags == These tags allow isolation of bugs into smaller groups, providing an easier and faster way to work on specific issues. ||<rowbgcolor="#FFEBBB"> '''Tag''' || '''Use case''' || || [[https://launchpad.net/ubuntu/+bugs?field.tag=driver-madwifi|`driver-madwifi`]] || Bugs in which the madwifi driver is in use || || [[https://launchpad.net/ubuntu/+bugs?field.tag=driver-ndiswrapper|`driver-ndiswrapper`]] || Bugs in which the ndiswrapper driver is in use || || [[https://launchpad.net/ubuntu/+bugs?field.tag=vpn|`vpn`]] || Bugs related to either openvpn, vpnc or pptp network-manager vpn modules || || [[https://launchpad.net/ubuntu/+bugs?field.tag=encryption-wep|`encryption-wep`]] || Bugs in which WEP encryption is used || || [[https://launchpad.net/ubuntu/+bugs?field.tag=encryption-wpa|`encryption-wpa`]] || Bugs in which WPA encryption is used || || [[https://launchpad.net/ubuntu/+bugs?field.tag=encryption-wpa2|`encryption-wpa2`]] || Bugs in which WPA2 encryption is used || The previously described tags are specific to the [[NetworkManager]] application, if you need more general tags please visit [[Bugs/Tags]] page. == Testing a patch == Sometimes a developer might ask you to test a quick patch he came up with. Below an example how to do that for network-manager. If your bug is for network-manager-applet or some other package, just replace the package name {{{ # get build dependencies sudo apt-get install build-essential fakeroot devscripts sudo apt-get build-dep network-manager # get sources sudo apt-get source network-manager # cd into the source directory cd network-manager-*/ # apply the patch (note that -p1 could also be -p0 if the patch was created without an extra prefix in the diff path) patch -p1 < /tmp/yourdownloadedpatch.diff # build binaries only without signing debuild -b -uc # packages are produced in parent directory cd ../ # install all nm packages sudo dpkg -i network-manager*.deb libnm-*.deb }}} Note that you didnt change the version of the package. so to get back to the "official" current version you need to do something like: {{{ sudo apt-get install --reinstall network-manager libnm-util0 libnm-glib0 }}} if you installed other packages from the build, do the same for them. ---- CategoryBugSquad |
This page is part of the debugging series — pages with debugging details for a variety of Ubuntu packages. |
Bug Summary
If a network-manager bug report is about not being able to connect the title or summary should be in the format:
"[CHIPSET] cannot connect to (ENCRYPT_METHOD)"
where the CHIPSET is the wireless driver used and ENCRYPT_METHOD is the encryption method used by your wireless network.
A Testcase
A good testcase is a step by step instruction to reproduce your bug starting with driver unloaded and NetworkManager stopped.
Kill NetworkManager
sudo killall NetworkManager
To unload your driver sudo modprobe -r DRIVER .
Then load the driver sudo modprobe DRIVER and start NetworkManager:
sudo NetworkManager
Capture Log
In order to understand whats going on and track down issues, its good to have a full log. To do so, capture the complete test case and submit the whole file (don't cut out what you think is important). Please add markers in the log file so the bug triager can easily see what actions the user takes at what point of time (this isn't essential, but helps a lot).
To capture the syslog, do:
tail -n0 -f /var/log/syslog > /tmp/syslog
and to stop capturing do Ctrl-C (you will have to type your other commands in an other window or tab)
Adding markers is just like adding new lines with an editor that show the triager what happened at what point of time.
Example marker:
Sep 6 08:12:30 ... [ clicked on wireless network 'ubuntu'] Sep 6 08:12:31 ... ...
Serial Log (Mobile Broadband)
# become root sudo su # stop NM /etc/init.d/NetworkManager stop # start with serial log and tee it in a log file NM_SERIAL_DEBUG=1 NetworkManager --no-daemon 2>&1 | tee /tmp/nm-serial.txt
... reproduce and attach the nm-serial.txt
Debugging Crashes
To install debug symbols, add the following line to your /etc/apt/sources.list
deb http://ddebs.ubuntu.com/~ubuntu-archive/ddebs/ hardy main universe
or
deb http://ddebs.ubuntu.com/~ubuntu-archive/ddebs/ intrepid main universe
Then install the appropriate dbgsym packages:
sudo apt-get update sudo apt-get install network-manager-dbgsym libnm-util0-dbgsym libnm-glib0-dbgsym libglib2.0-0-dbgsym
Then stop NetworkManager (hardy):
sudo /etc/dbus-1/event.d/25NetworkManager stop
or stop NetworkManager (intrepid):
sudo /etc/init.d/NetworkManager stop
Run NetworkManager in a debugger
sudo gdb /usr/sbin/NetworkManager ... (gdb) run --no-daemon
Once it crashes get a backtrace
(gdb) bt ... (gdb) bt full ... (gdb) thread apply all bt full ...
and attach the backtrace above together with your /var/log/syslog to the bug.
Driver Logs
When a bug appears to be driver related or you are asked by a bug triager to submit a driver enabled log, you need to enable driver logging right before you start to capture your testcase. How to do that depends on the driver you use and whether it has been with compiled with debug support.
Driver Specific Info
IPW (2100,2200, 3945)
Logging
# either during module load: modprobe ipw{2100,2200,3945} debug=65535 # or when already loaded you can change the debug_level through /sys/bus/.../drivers/ echo 65535 > /sys/bus/pci/drivers/ipw{2100,2200,3945}/debug_level
Compiling Module Sources
For debugging purpose or to verify a fix, a developer might ask you to build your driver module from source. for ipwXXXX you can do that by:
# install required headers and build tools sudo apt-get install module-assistant sudo module assistant update sudo module assistant prepare # build the driver cd /path/to/ipw-XXXX make IEEE80211_IGNORE_DUPLICATE=y SHELL=/bin/bash # backup your old ipw driver: sudo cp /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ipw3945/ipw3945.ko $HOME # install the new driver cp ipw3945.ko /lib/modules/$(uname -r)/kernel/drivers/net/wireless/ipw3945/ depmod -a # kill regulatory daemon ipw3945d-$(uname -r) --kill #load new module modprobe ipw3945
Bug Tags
These tags allow isolation of bugs into smaller groups, providing an easier and faster way to work on specific issues.
Tag |
Use case |
Bugs in which the madwifi driver is in use |
|
Bugs in which the ndiswrapper driver is in use |
|
Bugs related to either openvpn, vpnc or pptp network-manager vpn modules |
|
Bugs in which WEP encryption is used |
|
Bugs in which WPA encryption is used |
|
Bugs in which WPA2 encryption is used |
The previously described tags are specific to the NetworkManager application, if you need more general tags please visit Bugs/Tags page.
Testing a patch
Sometimes a developer might ask you to test a quick patch he came up with. Below an example how to do that for network-manager. If your bug is for network-manager-applet or some other package, just replace the package name
# get build dependencies sudo apt-get install build-essential fakeroot devscripts sudo apt-get build-dep network-manager # get sources sudo apt-get source network-manager # cd into the source directory cd network-manager-*/ # apply the patch (note that -p1 could also be -p0 if the patch was created without an extra prefix in the diff path) patch -p1 < /tmp/yourdownloadedpatch.diff # build binaries only without signing debuild -b -uc # packages are produced in parent directory cd ../ # install all nm packages sudo dpkg -i network-manager*.deb libnm-*.deb
Note that you didnt change the version of the package. so to get back to the "official" current version you need to do something like:
sudo apt-get install --reinstall network-manager libnm-util0 libnm-glib0
if you installed other packages from the build, do the same for them.
DebuggingNetworkManager (last edited 2023-06-27 20:21:45 by hellsworth)