mNo edit summary |
(Update Test Plan, add link to package review) |
||
Line 13: | Line 13: | ||
* Targeted release: [[Releases/11|Fedora 11]] | * Targeted release: [[Releases/11|Fedora 11]] | ||
* Last updated: January 28, 2009 | * Last updated: January 28, 2009 | ||
* Percentage of completion: | * Percentage of completion: 80% | ||
== Detailed Description == | == Detailed Description == | ||
Line 37: | Line 37: | ||
#* Configuration files to specify the location of the server | #* Configuration files to specify the location of the server | ||
If possible, we should also provide a public debuginfofs server for Fedora users, and pre-configure the service to use that. | |||
The debuginfofs package has been submitted for review: https://bugzilla.redhat.com/show_bug.cgi?id=487587 | |||
== How To Test == | == How To Test == | ||
1. Prepare a debuginfo server | 1. Prepare a debuginfo server | ||
* ''public instance coming soon'' | * ''public instance coming soon (?)'' | ||
curl -O http://wwoods.fedorapeople.org/review/debuginfofs-server-0.1-0.fc11.noarch.rpm | |||
yum localinstall --nogpgcheck debuginfofs-server-0.1-0.fc11.noarch.rpm | |||
debuginfofs-mirror --releasever=YOURDISTROVERSION --basearch=CLIENTARCH | |||
service httpd start | |||
2. Install / configure debuginfofs on the client | 2. Install / configure debuginfofs on the client | ||
curl -O http://wwoods.fedorapeople.org/review/debuginfofs-0.1-0.fc11.noarch.rpm | |||
yum localinstall --nogpgcheck debuginfofs-0.1-0.fc11.noarch.rpm | |||
vi /etc/sysconfig/debuginfofs ''# change DEBUGINFOFS_SERVER'' | |||
vi /etc/sysconfig/debuginfofs ''# | |||
3. Mount debuginfofs | 3. Mount debuginfofs | ||
service debuginfofs start | |||
4. Crash a program in gdb | 4. Crash a program in gdb | ||
Line 85: | Line 84: | ||
If everything is working as expected, you will see the function/file names, as above. | If everything is working as expected, you will see the function/file names, as above. | ||
== User Experience == | == User Experience == | ||
Line 107: | Line 91: | ||
== Dependencies == | == Dependencies == | ||
* We've chosen WebDAV as the network filesystem for this project, so: | * We've chosen WebDAV as the network filesystem for this project, so: | ||
** The server-side requires {{package|httpd}}'s Dav module. | ** The server-side requires {{package|httpd}}'s Dav module. | ||
** Client-side requires a FUSE implementation of WebDAV. {{package|wdfs}} is the only one packaged at the moment, but [http://sourceforge.net/projects/dav/ davfs2] could be considered as well. | ** Client-side requires a FUSE implementation of WebDAV. {{package|wdfs}} is the only one packaged at the moment, but [http://sourceforge.net/projects/dav/ davfs2] could be considered as well. | ||
* A public debuginfofs server will require somewhere around | * A public debuginfofs server will require somewhere around 30GB of disk per Fedora version/arch - a total of ~300GB for Fedora (9,10,11) * (i386,x86_64,ppc). | ||
** Some further work could be done to drastically reduce the amount of disk space needed by only unpacking debuginfo ''when it is needed'' - this may be required if the Fedora infrastructure can't spare that much disk space. | ** Some further work could be done to drastically reduce the amount of disk space needed by only unpacking debuginfo ''when it is needed'' - this may be required if the Fedora infrastructure can't spare that much disk space. | ||
** This would also reduce setup time to near-zero, since we don't have the overhead of unpacking all the RPMs. | ** This would also reduce setup time to near-zero, since we don't have the overhead of unpacking all the RPMs. | ||
Line 118: | Line 101: | ||
== Contingency Plan == | == Contingency Plan == | ||
None needed - things stay as they are. | None needed - things stay as they are. | ||
== Documentation == | == Documentation == | ||
The gdb info pages and [[Releases/FeatureBuildId]] give some background on the Build-Id feature that makes this possible. | The gdb info pages and [[Releases/FeatureBuildId]] give some background on the Build-Id feature that makes this possible. | ||
== Release Notes == | == Release Notes == | ||
There is a new <code>debuginfofs</code> service, which provides debuginfo for all Fedora packages over the Internet. | There is a new <code>debuginfofs</code> service, which provides debuginfo for all Fedora packages over the Internet. |
Revision as of 17:36, 2 March 2009
DebuginfoFS
Summary
A read-only, internet-mountable filesystem that provides debuginfo (for use with gdb
and other debugging tools), and
a client service to mount the debuginfo filesystem when needed.
Owner
- Name: Will Woods
- email: wwoods@redhat.com
Current status
- Targeted release: Fedora 11
- Last updated: January 28, 2009
- Percentage of completion: 80%
Detailed Description
When a program crashes or is otherwise misbehaving, one of the most helpful things to put in a bug report is a traceback of the offending process, gathered by using gdb
. GNOME's bug-buddy
does this automatically. But without debugging info, the tracebacks are incomplete.
debuginfo-install
can be used to install the needed debuginfo packages, but this takes a long time (2-5 minutes) and 95% of the installed data is unused.
This Feature will provide scripts and tools to provide a WebDAV filesystem containing all the debuginfo needed for everything in Fedora, and a service to allow users (or automatic crash-reporting processes - like Features/CrashCatcher) to mount the filesystem when needed.
Benefit to Fedora
By simplifying the process of getting debugging info, we can improve the quality of bug reports, which should make it easier (and faster) to get bugs fixed.
Scope
There will be two main parts to this feature:
- A
debuginfofs-server
package, which provides- A
debuginfofs-server
service, - Configuration files to specify which distributions (version/arch) to support, and
- Some documentation on setting up / maintaining the server.
- A
- A
debuginfofs
package, which provides- A
debuginfofs
service, - Configuration files to specify the location of the server
- A
If possible, we should also provide a public debuginfofs server for Fedora users, and pre-configure the service to use that.
The debuginfofs package has been submitted for review: https://bugzilla.redhat.com/show_bug.cgi?id=487587
How To Test
1. Prepare a debuginfo server
- public instance coming soon (?)
curl -O http://wwoods.fedorapeople.org/review/debuginfofs-server-0.1-0.fc11.noarch.rpm yum localinstall --nogpgcheck debuginfofs-server-0.1-0.fc11.noarch.rpm debuginfofs-mirror --releasever=YOURDISTROVERSION --basearch=CLIENTARCH service httpd start
2. Install / configure debuginfofs on the client
curl -O http://wwoods.fedorapeople.org/review/debuginfofs-0.1-0.fc11.noarch.rpm yum localinstall --nogpgcheck debuginfofs-0.1-0.fc11.noarch.rpm vi /etc/sysconfig/debuginfofs # change DEBUGINFOFS_SERVER
3. Mount debuginfofs
service debuginfofs start
4. Crash a program in gdb
[wwoods@metroid debuginfofs]$ gdb $(which sleep) GNU gdb Fedora (6.8-29.fc10) Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"... (gdb) set args 999 (gdb) run Starting program: /bin/sleep 999 [Hit Ctrl-C] Program received signal SIGINT, Interrupt. __kernel_vsyscall () at arch/x86/vdso/vdso32/int80.S:16 16 arch/x86/vdso/vdso32/int80.S: No such file or directory. in arch/x86/vdso/vdso32/int80.S Current language: auto; currently asm (gdb) bt #0 __kernel_vsyscall () at arch/x86/vdso/vdso32/int80.S:16 #1 0x008ac430 in __nanosleep_nocancel () from /lib/libc.so.6 #2 0x0804abd3 in xnanosleep (seconds=999) at xnanosleep.c:112 #3 0x080490f6 in main (argc=2, argv=0xbffff514) at sleep.c:150 (gdb)
If everything is working as expected, you will see the function/file names, as above.
User Experience
Getting debuginfo to get a backtrace for a bug report will become much, much easier (and faster), but the process will change slightly.
Dependencies
- We've chosen WebDAV as the network filesystem for this project, so:
- A public debuginfofs server will require somewhere around 30GB of disk per Fedora version/arch - a total of ~300GB for Fedora (9,10,11) * (i386,x86_64,ppc).
- Some further work could be done to drastically reduce the amount of disk space needed by only unpacking debuginfo when it is needed - this may be required if the Fedora infrastructure can't spare that much disk space.
- This would also reduce setup time to near-zero, since we don't have the overhead of unpacking all the RPMs.
- If we need access to the source files as well as the debugging symbols, there will need to be an additional layer on the client-side to find the source files and put them in a place where
gdb
can find them.
Contingency Plan
None needed - things stay as they are.
Documentation
The gdb info pages and Releases/FeatureBuildId give some background on the Build-Id feature that makes this possible.
Release Notes
There is a new debuginfofs
service, which provides debuginfo for all Fedora packages over the Internet.