The Fedora Project: BugZappers and QA efforts Dogtail, SystemTap, Frysk...

Fedora - The best combination of robust and cutting-edge software

Rahul Sundaram Sundaram@fedoraproject.org

FUDCon Delhi 2006, India.

Who the heck is Rahul?
(my favorite part of this presentation)
“ You must be the change you want to see in the world. ” — Mahatma Gandhi

Fedora Foundation advisory board list discreet member

Fedora Ambassadors steering committee member.

Fedora Ambassador for India.

Fedora journal online magazine initiator and editor in chief .

Editor for Fedora weekly reports.

Fedora Websites, Documentation and Bug Triaging projects volunteer and miscellaneous few grunt work.

Self elected Fedora project monkey and noisemaker cautiously sponsored by Red Hat.

Fedora : The (somewhat) Short Definition

Fedora is an open, innovative, forward looking operating system and platform, based on Linux, that is always free for anyone to use, modify and distribute, now and forever. It is developed by a large community of people who strive to provide and maintain the very best in free, open source software and standards. The Fedora Project is managed and directed by the (non-profit) Fedora Foundation and sponsored by Red Hat.

Fedora Bug Zappers

Triaging is just sweeping clean bugs.

To track down and shoot bugs in the Fedora tracker @ http:// bugzilla.redhat.com and act as a bridge between users and developers.

It's not a bug unless it is in bugzilla.

Triaging process

Subscribe to fedora-triage-list

Read procedures in. RTFM http://fedoraproject.org/wiki/BugZappers

Join Fedora Bug Squad on IRC - #fedora-bugs and especially on one of the Bugs days (ie) every Friday

Watch the bug bot @ #fedorabot for real time bug reports. http://fedoraproject.org/wiki/FedoraBots

Start triaging!

Fedora Bug Hunting -Resources

- https://bugzilla.redhat.com

irc://freenode.net/fedora-bugs (#fedora-bugs)

irc://freenode.net/fedorabot (#fedorabot)

Fedora Bug Day every Friday on IRC

fedora-triage-list@redhat.com

Triaging guidelines (http://fedoraproject.org/wiki/TriagingGuidelines)

Firefox Search Plugins for Bugzilla (http://marius.galuna.ro/fedora/searchplugins/)

Stock responses (http://fedoraproject.org/wiki/StockBugzillaResponses)

What do I do?

Verify that the bug has enough information to reproduce the problem. Use the manuals. Use the source.

Make sure the bugs are assigned to the right component and version.

Close invalid bug reports.

Mark and close duplicates.

Make balanced decisions regarding feature requests.

Set milestones and targets.

dogtail

http://people.redhat.com/zcerza/dogtail/

GUI test tool and automation framework written in Python.

Uses Accessibility (a11y) technologies to communicate with desktop applications.

dogtail scripts are written in Python and executed like any other Python program.

Procedural API,

Easily extensible. Provides clear results and debug reporting

dogtail – FileChooser Stress Test

from dogtail.procedural import *

run('gedit')

while True:

click('Open...')

focus.dialog('Open File...')

click('Cancel')

System Tap - Probing

http://sourceware.org/systemtap/

infrastructure to simplify the gathering of information about the running Linux kernel.

assists diagnosis of a performance or functional problem.

No need for the developer to go through recompile, install, and reboot sequence for collecting information.

Stap – Front end to system tap tool. Uses strictly typed, declaration free, procedural language similar to Awk for generating probes or traces

Translates into C code internally

Guru mode for additional flexibility

Frysk - Execution analysis Tool

http://sourceware.org/frysk/

An intelligent, distributed, always-on system monitoring and debugging tool

Emphasizes being able to examine, analyze, monitor, and visualize an application as it continues to execute normally.

allows developers and system administrators to monitor running processes and threads (including creation and destruction events)

monitor the use of locking primitives, expose deadlocks, gather data and debug any given process by either choosing it from a list or frysk window on a process

Can analyze a crashing program or that has been misbehaving in certain user-definable ways.

Start bugging me for a change.
Rahul Sundaram. Sundaram@fedoraproject.org

Back Slides

The Slides I am supposed to not scare you with.

Stack traces

Instructions at http://fedoraproject.org/wiki/StackTraces

A stack trace (sometimes also called a backtrace) is a list of function calls that leads to some point in the program.

Gdb (GNU debugger) is the classical tool. gdb <name-of-program>;

[New Thread 8192 (LWP 15167)]

0x420ae169 in wait4 () from /lib/i686/libc.so.6

#0 0x420ae169 in wait4 () from /lib/i686/libc.so.6

#1 0x4212a2d0 in __DTOR_END__ () from /lib/i686/libc.so.6

#2 0x40842c63 in waitpid () from /lib/i686/libpthread.so.0

#3 0x4018cff5 in libgnomeui_module_info_get () from /usr/lib/libgnomeui-2.so.0

System Tap - Boot Probe Procedure

http://people.redhat.com/berrange/systemtap/bootprobe/

stap -g -k -p 4 initprocs.stp

mv /tmp/stapUf342/stap_2433.ko /boot/stap/initprocs.ko

cp stap-init.sh /boot/stap/init.sh

Grub menu – append 'init=/boot/stap/init.sh'

wait for startup to complete...

killall stpd

cp /boot/stap/data/initprocs.log /root/initprocs.log

System Tap – Boot Probe Snippet

global indent

function get_usertime:long() %{

THIS->__retvalue = current->utime + current->signal->utime;

%}

function get_systime:long() %{

THIS->__retvalue = current->stime + current->signal->stime;

%}

...... probe kernel.function("sys_clone").return {

print(timestamp() . proc() . " forks " . string(retval()). "\n")

push(retval(), pid())

}

probe kernel.function("do_execve") {

print(timestamp() . proc() . " execs " . kernel_string($filename) . "\n")

}

Frysk: Comparison – Take 1

Frysk	oprofile	systemtap

Strictly user mode	kernel modules	kernel modules

100% reliable	Uses sampling	100% reliable

Active control	N/A	Passive

Frysk: Comparison – Take 2

Traditional	frysk

single thread, process and host	multi *

start and stop: no middle ground	non-stop

explicit attach	always on

explicit control	event driven

command-line based	graphical, visual

assume unoptimized C	assume optimized code

debug info loaded immediately	Debug on demand

kept in memory	loaded on disk

implemented in C	implemented in Java and C++

single-threaded,	multi-threaded, OO and event

procedural, blocking and polling

What else does Red Hat do all day? Credit: Havoc

Keep the same version of the software running on seven CPU architectures (again, we do backports, we don't upgrade to whatever works)

A QA and release engineering process on all seven architectures

Develop new features, tracking a list of customer and partner requests and prioritizing features based on those requests

Recruiting and certifying ISVs, and modifying the OS to make their software work well

Certifying hardware platforms and devices

Standards-compliance and other certifications and benchmarks

Technical support, in-person, on the phone, via web and email

Documentation

Security errata, including tracking, fixing, and documenting each issue

Upstream maintenance duties for lots of open source software

Inclusion (on a separate CD) of some proprietary software packages that require licensing

Bandwidth to deliver updates and fixes (this costs a lot more than you might think)

A lengthy beta program, where we test the software for several months and collect partner, ISV, and customer feedback

Guarantee from a company that all of the above will happen

ACT to Red Hat. My own account of Fedora contributions

Ankit Patel

2003-11-04T10:29:46