LWN.net Logo

Development

Using Promela and Spin to verify parallel algorithms

Validating Parallel Algorithms

Parallel algorithms can be hard to write, and even harder to debug. Testing, though essential, is insufficient, as fatal race conditions can have extremely low probabilities of occurrence. Proofs of correctness can be valuable, but in the end are just as prone to human error as is the original algorithm.

It would be very helpful to have a tool that could somehow locate all race conditions. Such a tool in fact exists in the form of the language Promela and its compiler Spin.

What are Promela and Spin?

Promela is a language designed to help verify protocols, but which can also be used to verify small parallel algorithms. You recode your algorithm and correctness constraints in the C-like language Promela, and then use Spin to translate it into a C program that you can compile and run. The resulting program conducts a full state-space search of your algorithm, either verifying or finding counter-examples for assertions that you can include in your Promela program.

This full-state search can be extremely powerful, but can also be a two-edged sword. If your algorithm is too complex or your Promela implementation is careless, there might be more states than fit in memory. Furthermore, even given sufficient memory, the state-space search might well run for longer than the expected lifetime of the universe. Therefore, use this tool for compact but complex parallel algorithms. Attempts to naively apply it to even moderate-scale algorithms (let alone the full Linux kernel) will end badly.

Promela and Spin may be downloaded from here.

The above site also gives links to Gerard Holzmann's excellent book on Promela and Spin, as well as online references starting here.

The remainder of this article describes how to use Promela to debug parallel algorithms, starting with simple examples and progressing to more complex uses.

[Editor's note: the remainder of this article is long. Interested readers are encouraged to read the full article on its own page.]

Comments (6 posted)

System Applications

Clusters and Grids

Release 2.1.2 of Linux-HA is now available

Version 2.1.2 of Linux-HA, a cluster control system, is out. "This release has been extensively tested and is considered stable. At this time, there are no known regressions fro previous stable releases, or the Novell SLES10 SP1 release. It fixes the annoying installation problems that were observed in 2.1.1, and also fixes a small number of other bugs as well."

Full Story (comments: none)

Database Software

PostgreSQL Weekly News

The July 29, 2007 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

Filesystem Utilities

Grsync 0.6 released

Stable version 0.6 of Grsync has been announced. "Grsync is a GUI for rsync, the command line directory synchronization tool. While it can work with remote hosts, its focus is to synchronize local directories."

Comments (none posted)

Libraries

libnfnetlink 0.0.30 released

Version 0.0.30 of libnfnetlink is out with new capabilities and bug fixes. "libnfnetlink is the low-level library for netfilter related kernel/userspace communication. It provides a generic messaging infrastructure for in-kernel netfilter subsystems (such as nfnetlink_log, nfnetlink_queue, nfnetlink_conntrack) and their respective users and/or management tools in userspace."

Full Story (comments: none)

Networking Tools

conntrack-tools 0.9.5 released

Version 0.9.5 of conntrack-tools, a netfilter firewall configuration utility, is out with new features, some code rework and bug fixes.

Full Story (comments: none)

libnetfilter_conntrack 0.0.81 released

Version 0.0.81 of libnetfilter_conntrack has been released. "libnetfilter_conntrack is a userspace library providing a programming interface (API) to the in-kernel connection tracking state table. This release includes minor changes and bugfixes."

Full Story (comments: none)

Printing

CUPS 1.3rc2 has been released

Version 1.3rc2 of CUPS, the Common Unix Printing System, has been announced. "This is an updated release candidate that fixes a scheduler crash and two other non-critical bugs."

Comments (none posted)

Web Site Development

Django weekly roundup

The July 30, 2007 edition of the Django weekly roundup covers the latest developments on the Django web platform.

Comments (none posted)

lighttpd 1.4.16 released

Version 1.4.16 of lighttpd, a light weight web server, is out. "We all could use some refreshment in this hot summer. So how about a fresh and shiny new lighttpd release? Sadly the main reasons are again a few security fixes. (Bad developers, bad!) But we broke it, we fix it. On the other hand we squeezed in a new cool feature aswell. The E-Tag generation is now configurable. So if your files are on a NFS cluster you can now e.g. disable the inode number usage for the E-Tag."

Comments (none posted)

mnoGoSearch 3.3.4 released

Version 3.3.4 of mnoGoSearch, a web site search engine, is out with better support for huge documents and other new features. See the change log for more information.

Comments (none posted)

Web Services

Developing Web Services Using PHP (O'ReillyNet)

Deepak Vohra uses PHP to write web services in an O'Reilly article. "As Software as a Service becomes more of a trend in the industry, Web Services are gaining in importance. When most people think of Web Services, they think of Java or .NET, but as Deepak Vohra shows in this article, it's simple enough to implement them in PHP."

Comments (none posted)

Miscellaneous

lshw B.02.11 released

Stable version B.02.11 of Hardware Lister (lshw) has been announced. "lshw can report exact memory configuration, firmware version, mainboard configuration, CPU version and speed, cache configuration, bus speed, etc. on DMI-capable x86 or EFI (IA-64) systems and on some PowerPC machines (PowerMac G4 is known to work). Information can be output in plain text, XML or HTML."

Comments (none posted)

Desktop Applications

Accessibility

MouseClick 0.8.1 released

Stable version 0.8.1 of MouseClick has been announced. "MouseClick is an ergonomic software intended to help those suffering some form of RSI (Repetitive Strain Injury) or other computer related illnesses and cannot click the mouse or other pointing devices. Whenever the mouse pauses briefly, MouseClick sends a click, the amount of time it waits before it clicks is adjustable. In drag mode, it clicks down and then pauses before it clicks up; if you move the mouse while it is down, MouseClick will wait until you are done before clicking up."

Comments (none posted)

Audio Applications

Ardour 2.0.4 released

Version 2.0.4 of Ardour, a multi-track audio editor, is out. "Squeaking just before of the end of July, the Ardour project brings you release 2.0.4 ( tarball, DMG to follow), another mix of important bug fixes with some great new features." See the release notes for more information.

Comments (none posted)

FLAC 1.2.0 released

Version 1.2.0 of FLAC, the Free Lossless Audio Codec, is out. "New in this release are small speed improvements, and some new options and bug fixes. Also the decoder has been updated to pave the way for some format improvements, so if your software supports FLAC be sure to check it out."

Comments (none posted)

Desktop Environments

Frugal Windowing Environment 0.1.5 released

Stable version 0.1.5 of the Frugal Windowing Environment has been announced. "Frugal Windowing Environment is a user-space client-server windowing environment that uses the framebuffer. It is the next logical development of FBUI."

Comments (none posted)

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at gnomefiles.org.

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week: You can find more new KDE software releases at kde-apps.org.

Comments (none posted)

Xorg Software Announcements

The following new Xorg software has been announced this week: More information can be found on the X.Org Foundation wiki.

Comments (none posted)

Desktop Publishing

LyX 1.4.5.1 released

Version 1.4.5.1 of the LyX typesetter is available. "This is expected to be the last release in the 1.4.x stable branch. Besides the obligatory bug fixes, its main feature is the ability to read files created by LyX 1.5.0 (this feature requires python 2.3.4 or later). The only change over release 1.4.5 is the addition to the distribution of one file necessary to read and write lyx 1.5 files."

Full Story (comments: none)

LyX 1.5.0 released

Version 1.5.0 of the LyX typesetter has been released. "Since the announcement of release candidate 2, we have fixed bugs and we have updated the documentation. Following the ad hoc tradition of 1.5.0 pre-releases, called respectively Ruby (alpha), Towny (beta) and Quinta ("farm" in Portuguese for the release candidates) this release starts the Vintage selection that is (will be) the 1.5 series."

Full Story (comments: none)

Electronics

Announcing GNU Radio release 3.0.4

Version 3.0.4 of GNU Radio, a software-defined radio transmitter system, has been announced. "This is a bug fix release, back-porting all applicable bug fixes on the development trunk into the stable release branch."

Full Story (comments: none)

gSpiceUI 0.9.33 released

Version 0.9.33 of gSpiceUI, a GUI frontend to the spice electronic simulation language, is out. See the change log for a list of new features and bug fixes.

Comments (none posted)

Icarus Verilog 0.8.5 released

Version 0.8.5 of Icarus Verilog, an electronic simulation language compiler, is out. See the change log document for more information on this release.

Comments (none posted)

Financial Applications

PostBooks accounting package released

The company once known as OpenMFG, now called xTuple, has announced the release of PostBooks, a Qt-based accounting package seemingly aimed at winning over QuickBooks users. It is available under the CPAL license, which just got its "open source" seal of approval from the OSI.

Comments (5 posted)

Interoperability

Wine 0.9.42 is available

Version 0.9.42 of Wine has been announced. Changes include: Support for activation contexts and side-by-side assemblies, Many more gdiplus functions, More messaging support in crypt32.dll, Many HTTP protocol handling fixes and Lots of bug fixes.

Comments (none posted)

Mail Clients

Thunderbird to find new home as Mozilla Foundation focuses on Firefox (MozillaZine)

MozillaZine reports that management of the Mozilla Thunderbird mail client will be separated from the Mozilla Firefox browser. "On her weblog, Mozilla Corporation CEO Mitchell Baker has announced that Mozilla Thunderbird is to move to a "new, separate organizational setting" as the Mozilla Foundation continues to focus ever more closely on Mozilla Firefox. While the Mozilla Foundation supports a number of projects, its taxable subsidiary the Mozilla Corporation is responsible for only Firefox and Thunderbird. However, it has become increasingly clear that Firefox is the priority."

Comments (21 posted)

Office Applications

HylaFAX 4.4.0 released

Version 4.4.0 of HylaFAX, a FAX modem control program, has been announced. "The 4.4 branch of HylaFAX has been in development for the past 4 months. This release includes many improvements over the 4.3 branch of HylaFAX and as such, is a recommended upgrade."

Comments (none posted)

Office Suites

OpenOffice.org Newsletter

The July, 2007 edition of the OpenOffice.org Newsletter is out with the latest OO.o office suite articles and events.

Full Story (comments: none)

Digital Photography

UFRaw 0.12 released

Version 0.12 of UFRaw, a utility that can read and manipulate raw images from digital cameras, is out. "UFRaw-0.12 was just released with many new features including full color management, cropping, rotating, scrolling, noise reduction, two new interpolations, a cinepaint plug-in, 21 new cameras and more."

Full Story (comments: none)

Web Browsers

Firefox 2.0.0.6 released

Firefox 2.0.0.6 is out - this is yet another security update. The worst of the fixed vulnerabilities involves passing unescaped URIs to external programs. "If you are still running Firefox 1.5.0.x, you are highly encouraged to upgrade to the Firefox 2 series as Mozilla ceased supporting Firefox 1.5.0.x in May 2007."

Full Story (comments: none)

Languages and Tools

Caml

Caml Weekly News

The July 31, 2007 edition of the Caml Weekly News is out with new Caml language articles.

Full Story (comments: none)

Java

IcedTea 1.2 Fonts and Graphics release

Version 1.2 of IcedTea has been announced, testers are needed. "The IcedTea project provides a harness to build the source code from OpenJDK using Free Software build tools and provides replacements libraries for the binary plugs with code from the GNU Classpath project."

Full Story (comments: none)

Restlet 1.0.4 released

Version 1.0.4 of Restlet, a Lightweight REST framework for Java, is out with lots of bug fixes and a few new features. See the changes document for details.

Comments (none posted)

Python

The Python 3000 FAQ

Guido van Rossum has published the Python 3000 FAQ: "Some questions that people often ask about Python 3000 (and answers)."

Comments (none posted)

Python-URL! - weekly Python news and links

The July 30, 2007 edition of the Python-URL! is online with a new collection of Python article links.

Full Story (comments: none)

Tcl/Tk

Tcl-URL! - weekly Tcl news and links

The August 1, 2007 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.

Full Story (comments: none)

XML

XQuery, libferris, and Virtual Filesystems (XML.com)

Ben Martin discusses libferris in an O'Reilly XML.com article. "By bringing together an XQuery engine and a virtual filesystem you can use a familiar query language to access relational databases, Berkeley db4 databases, kernel filesystems, and network files as well as XML. libferris, at its, core is a virtual filesystem allowing many different data sources to be exposed through a filesystem interface. These include the expected things like file://, http://, ftp:// as well as not so expected things like databases, XML files, and even applications like emacs, Evolution, XWindow, and Firefox."

Comments (none posted)

Miscellaneous

AutoGen version 5.9.2 released

Version 5.9.2 of AutoGen, a tool designed to simplify the creation and maintenance of programs that contain large amounts of repetitious text, has been announced. It adds several new capabilities and some bug fixes.

Comments (none posted)

Page editor: Forrest Cook
Next page: Linux in the news>>

Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds