Thursday, May 5, 2011

Top 5 Linux DVD RIP Software

A DVD ripper software allows you to copying the content of a DVD to a hard disk drive. You transfer video on DVDs to different formats, or make a backup of DVD content, and to convert DVD video for playback on media players, streaming, and mobile phone. A few DVD rippers software can copy protected disks so that you can make discs unrestricted and region-free.

Please note that most of the following programs can rip encrypted DVDs, as long as you have libdvdcss2 installed as described here. Please check the copyright laws for your country regarding the backup of any copyright-protected DVDs and other media.

AcidRip is an automated front end for MPlayer/Mencoder (ripping and encoding DVD tool using mplayer and mencoder) written in Perl, using Gtk2::Perl for a graphical interface. Makes encoding a DVD just one button click! You can install it as follows under Debian / Ubuntu Linux:
$ sudo apt-get install acidrip

Fig.01: Linux Ripping And Encoding DVD's With AcidRip Software Fig.01: Linux Ripping And Encoding DVD's With AcidRip Software


On the Preview tab you can choose to watch a bit of a preview of the resulting movie:
Fig.02: Preview your DVD rip Fig.02: Preview your DVD rip


And when you are ready, click the Start button to rip DVDs.

=> Download acidrip

dvd::rip is a full featured DVD copy program written in Perl i.e. fron end for transcode and ffmpeg. It provides an easy to use but feature-rich Gtk+ GUI to control almost all aspects of the ripping and transcoding process. It uses the widely known video processing swissknife transcode and many other Open Source tools. dvd::rip itself is licensed under GPL / Perl Artistic License. You can install dvd::rip as follows under Debian / Ubuntu Linux:
$ sudo apt-get install dvdrip

Fig.03: dvd::rip in action Fig.03: dvd::rip in action


You need to configure dvd::rip before you actually start a project. See the documentation for more information.

=> Download dvd::rip

HandBrake is an open-source, GPL-licensed, multiplatform, multithreaded video transcoder, available for MacOS X, Linux and Windows. It can rip from any DVD or Bluray-like source such as VIDEO_TS folder, DVD image, real DVD or bluray (unencrypted -- removal of copy protection is not supported), and some .VOB, .TS and M2TS files. You can install HandBrake under Debian or Ubuntu Linux as follows:
$ sudo apt-get install handbrake-gtk

Fig.04: HandBrake in action Fig.04: HandBrake in action

=> Download HandBrake

K9copy is a KDE DVD Backup tool. It allows the copy of a DVD9 to a DVD5. It is also known as a Linux DVD shrink. It supports the following features:

The video stream is compressed to make the video fiton a 4.7GB recordable DVDDVD BurningCreation of ISO imagesChoosing which audio and subtitle tracks are copied.Title preview (video only)The ability to preserve the original menus.

To install k9copy, enter:
$ sudo apt-get install k9copy

Fig.05: k9copy - Linux dvd shrink in action Fig.05: k9copy - Linux dvd shrink in action

=> Download k9copy

thoggen is a DVD backup utility ('DVD ripper') for Linux, based on GStreamer and Gtk+ toolkit. Thoggen is designed to be easy and straight-forward to use. It attempts to hide the complexity many other transcoding tools expose and tries to offer sensible defaults that work okay for most people most of the time. It support the following features:

Easy to use, with a nice graphical user interface (GUI).Supports title preview, picture cropping, and picture resizing.Language Selection for audio track (no subtitle support yet though).Encodes into Ogg/Theora video.Can encode from local directory with video DVD files.Based on the GStreamer multimedia framework, which makes it fairly easy to add additional encoding formats/codecs in future.

You can install thoggen as follows:
$ sudo apt-get install thoggen

Fig.06: Thoggen in action Fig.06: Thoggen in action

=> Download thoggen

=> You need to install various libraries to use the above mentioned tools such as (yum or apt-get commands will install them automatically for you):

libdvdcss2 - Simple foundation for reading DVDs - runtime libraries.libdvdnav4 - DVD navigation library.libdvdread4 - library for reading DVDs.

=> mencoder - Personally, I use mencoder to rip my DVDs into .avi files as follows:

mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vhq:vbitrate="1200" -vf scale -zoom -xy 640 -oac mp3lame -lameopts br=128 -o /nas/videos/my-movies/example/track2.avi

Please note that AcidRip, is a graphical frontend for mencoder.

=> VLC - Yes, VLC can rip DVDs too.

=> Transcode is a suite of command line utilities for transcoding video and audio codecs, and for converting between different container formats. Transcode can decode and encode many audio and video formats. Both K9Copy and dvd::rip are a graphical frontend for transcode.

=> Wine - It is an open source software for running Windows applications on other operating systems. You can use popular MS-Windows application such as DVDFab to rip encrypted DVD's and DVD Shrink to shrink them to smaller size. I do not *recommend* and encourage this option as it goes against the FOSS philosophy. The following screenshot based on trial version of DVDFab:

Fig.07: Running DVDFab under Wine v1.2.2 Fig.07: Running DVDFab under Wine v1.2.2

Have a favorite Linux DVD ripper software or ripping tip? Let's hear about it in the comments below.

Top 5 Open Source Linux Server Provisioning Software

Server provisioning is nothing but load the Linux or UNIX like operating systems automatically with actual operating systems, device drivers, data, and make a server ready for network operation without any user input. Typically you select a server from a pool of available servers, load the operating systems (such as RHEL, Fedora, FreeBSD, Debian), and finally customize storage, network (IP, gateway, bounding etc), drivers, applications, users etc. Using the following tools you can perform automated unattended operating system installation, configuration, set virtual machines and much more. These software can be used to install a lot (say thousands) of Linux and UNIX systems at the same time.

From the official Redhat guide:

Many system administrators would prefer to use an automated installation method to install Red Hat / CentOS / Fedora Linux on their machines. To answer this need, Red Hat created the kickstart installation method. Using kickstart, a system administrator can create a single file containing the answers to all the questions that would normally be asked during a typical Red Hat Linux installation. Kickstart provides a way for users to automate a Red Hat Enterprise Linux installation.

Kickstart Configurator allows you to create or modify a kickstart file using a graphical user interface, so that you do not have to remember the correct syntax of the file.

Fig.01: RHEL - Kickstart Configurator Fig.01: RHEL - Kickstart Configurator

FAI is a non-interactive system to install, customize and manage Linux systems and software configurations on computers as well as virtual machines and chroot environments, from small networks to large-scale infrastructures and clusters. It is a tool for fully automatic installation of Debian and other Linux Distributions such as Suse, Redhat, Solaris via network, custom install cd, or into a chroot environment. Some people also use it to install Windows.

Installs and updates Debian, Ubuntu, SuSe, RHEL, CentOS, Fedora, Mandriva, Solaris, etcCentralized deployment and configuration managementIntegrated disaster recovery systemEasy set up of software RAID and LVMInstalls XEN domains, VirtualBox and VserveEvery stage can be customized via hooksFull remote control via ssh during installation

See the official project website and wiki for more information.

Cobbler is a Linux provisioning server that centralizes and simplifies control of services including DHCP, TFTP, and DNS for the purpose of performing network-based operating systems installs. It can be configured for PXE, reinstallations, and virtualized guests using Xen, KVM or VMware. Again it is mainly used by Redhat and friends, but you can configure a PXE server to boot various non-RPM boot images such as Knoppix and other flavors of Debian such as Ubuntu.

There is also a lightweight built-in configuration management system, as well as support for integrating with configuration management systems like Puppet. Cobbler has a command line interface, a web interface, and also several API access options.

Fig.02: Cobbler WebUI (image credit: Fedora project) Fig.02: Cobbler WebUI (image credit: Fedora project)

See the official Cobbler project home page and wiki for more information.

From the official website:

Spacewalk is an open source (GPLv2) Linux systems management solution. It is the upstream community project from which the Red Hat Network Satellite product is derived. Spacewalk manages software content updates for Red Hat derived distributions such as Fedora, CentOS, and Scientific Linux, within your firewall. You can stage software content through different environments, managing the deployment of updates to systems and allowing you to view at which update level any given system is at across your deployment. A clean central web interface allows viewing of systems and their software update status, and initiating update actions.

Inventory your systems (hardware and software information)Install and update software on your systemsCollect and distribute your custom software packages into manageable groupsProvision (kickstart) your systemsManage and deploy configuration files to your systemsMonitor your systemsProvision and start/stop/configure virtual guestsDistribute content across multiple geographical sites in an efficient manner.Fig.03: Spacewalk Server Provisioning System Fig.03: Spacewalk Server Provisioning System

See the official project website for more information.

From the official website:

openQRM is the next generation, open-source Data-center management platform. Its fully pluggable architecture focuses on automatic, rapid- and appliance-based deployment, monitoring, high-availability, cloud computing and especially on supporting and conforming multiple virtualization technologies. openQRM is a single-management console for the complete IT-infra structure and provides a well defined API which can be used to integrate third-party tools as additional plugins.

Complete separation of "hardware" (physical servers and virtual machines) from "software" (server-images)
Support for different virtualization technologiesFully automatic Nagios configuration (single click) to monitor all systems and servicesHigh-availability : "N to 1" fail-over Integrated storage managementDistribution support - openQRM 4.x comes with a solid support for different linux distribution like Debian, Ubuntu, CentOS and openSuse. A single openQRM server can manage the provisioning of servers from those different linux distributions seamlessly.Fig.04: OpenQRM Dashboard Fig.04: OpenQRM Dashboard (image credit: OpenQRM project)

See the official project website for more information.

You can build your own server using PXE, TFTP server, and DHCP software. PXE allows you to boot up a system and have it automatically get an IP address via DHCP and start booting a kernel over the network. See the following articles for more information:

There are many proprietary software solutions available to automate the provisioning of servers, services and end-user devices from vendors such as BladeLogic, IBM, or HP. But open source software gives you more freedom to automate the installation of the Linux server. Some of the above software support UNIX and Windows operating systems too.

I'm wondering if you use Server Provisioning Software regularly. Drop your discussion below and share what works for you in the comments.

Sonar 2.7 released

The Sonar Team is pleased to announce the release of Sonar 2.7. This version focuses on providing further control on technical debt.


Prior to version 2.5, Sonar was really useful to assess application?s technical debt but was not so handy to manage evolution over time. In Sonar 2.5 was added the ability to see metrics evolution and monitor the apparition of new violations over a period of time or since an event. A similar functionality has now been added with version 2.7 for code coverage by unit tests on new / updated source code. It is now possible to follow what percentage of changed code over a period of time is covered by unit tests.


On top of this feature, the release contains more than 40 improvements and bug-fixes. To enjoy the new version, you can download it straight away.


New tool added - ABI Compliance Checker

ABI Compliance Checker (ACC) is an easy-to-use tool for checking backward binary compatibility (BC) of a shared C/C++ library. It checks header files along with shared libraries of old and new versions and analyzes changes in Application Binary Interface (ABI) that may cause compatibility problems: changes in calling stack, v-table changes, removed symbols, etc. Breakage of the binary compatibility may result in crashing or incorrect behavior of applications built with an old version of the library if they run on a new one. The tool is intended for library developers and operating system maintainers who are interested in ensuring binary compatibility, i.e. allow old applications to run with newer library versions without the need to recompile.

  See also: Upstream Tracker for C/C++ libraries; Java ACC prototype.

if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); }

The latest release can be downloaded from this page.

This program is free software. You may use, redistribute and/or modify it under the terms of either the GNU GPL or LGPL.

GNU/Linux, FreeBSD, Haiku (BeOS).

The tool requires GCC (3.0-4.6.0, recommended 4.4 or newer), binutils (c++filt, readelf, objdump) and Perl (base).
WARNING: if you are using ccache program (i.e. g++ points to /usr/lib/ccache/g++) then it should be newer than 3.1.2

The tool searches for the following list of changes in the API that may break binary compatibility:

Removed Symbols (functions, global data) Problems with Data Types Structures: added/removed fields (change of structure layout) change of size changes in fields (recursive analysis) Classes: added/removed virtual functions (change of v-table layout) change of virtual function position overridden virtual functions Enumerations: change of a member value renamed members Problems with Symbols (functions, methods) Stack Frame: added/removed parameters change of parameter type Other: changed attributes change of return value type incorrect version change Problems with Constants (#defines) Problems with Implementation changes in disassembled binary code

You can see detailed problem descriptions in the HTML ABI compliance report (see example) generated by the tool.

For using the tool, you should provide the XML descriptors for two library versions: 1st_version.xml and 2nd_version.xml files. Library descriptor is a simple XML-file that specifies version number, paths to header files and shared libraries and optionally some other information. An example of the descriptor is the following (0.3.4.xml):

0.3.4 /usr/local/libssh/0.3.4/include/ /usr/local/libssh/0.3.4/lib/

Command to compare two versions of a library:
 perl abi-compliance-checker.pl -l -d1 <1st_version.xml> -d2 <2nd_version.xml> 

The compatibility report will be generated to:
 compat_reports//<1st_version>_to_<2nd_version>/abi_compat_report.html 

The ACC tool can be used by ISVs for checking applications portability to new library versions by specifying of its binary using -app option:
 perl abi-compliance-checker.pl -l -d1 -d2 -app  

Found issues can be taken into account when adapting the application to a new library version.

To compare library versions that are not co-existed on one machine you can dump ABI to gzipped TXT format file using -dump option:
 perl abi-compliance-checker.pl -l -dump  

The ABI dump will be generated to:
 abi_dumps//_.abi.tar.gz 

Then transfer and pass it instead of the library descriptor:
 perl abi-compliance-checker.pl -l -d1 -d2  

See the list of all options on this page.

Check the libssh library versions for ABI compatibility:
 perl abi-compliance-checker.pl -l libssh -d1 0.3.4.xml -d2 0.4.0.xml 

The compatibility report will be generated to:
 compat_reports/libssh/0.3.4_to_0.4.0/abi_compat_report.html 

Dump library ABI:
 perl abi-compliance-checker.pl -l libssh -dump 0.3.4.xml 

The ABI will be dumped to:
 abi_dumps/libssh/libssh_0.3.4.abi.tar.gz 

Use previously dumped ABI:
 perl abi-compliance-checker.pl -l libssh -d1 libssh_0.3.4.abi.tar.gz -d2 0.4.0.xml 

Check application (csync) portability between libssh versions:
 perl abi-compliance-checker.pl -l libssh -d1 0.3.4.xml -d2 0.4.0.xml -app /usr/bin/csync 

An excellent tutorial "ABI: stability check" is available at Les RPM de Remi Blog.

See examples of compatibility report:

The report consists of:

Summary - Number of header files, shared libraries, symbols and data types checked by the tool. Verdict on binary compatibility. Problem Summary - Number of binary compatibility problems and added/removed symbols. Added Symbols - List of added symbols. Removed Symbols - List of removed symbols. Problems with Data Types - List of binary compatibility problems caused by changes in data types (divided by the severity level: High, Medium, Low). List of affected symbols. Problems with Symbols - List of binary compatibility problems caused by changes in symbol parameters and attributes (divided by the severity level). Problems with Constants - List of changed constants (#defines). Problems with Implementation - List of changes in disassembled binary code. Use -check-implementation option to enable this section.

Problems with high or medium level of severity or at least one removed symbol lead to incompatible verdict. Problems with low level of severity may be considered as warnings.

What is an ABI and how does it differ from an API?

An Application Binary Interface (ABI) is the set of supported run-time interfaces provided by a software component or set of components for applications to use, whereas an Application Programming Interface (API) is the set of build-time interfaces. The ABI may be defined by the formula:

library API + compiler ABI = library ABIWhy does this tool need both shared libraries and header files to check ABI compliance?

Without header files it is impossible to determine public symbols in ABI and data type definitions. Without shared libraries it is impossible to exactly determine symbols that are included in ABI for the specified library and also impossible to detect added/removed symbols.

icheck - C interface ABI/API checker, BCS - The Symbian Binary Compatibility Suite, shlib-compat - ABI compatibility checker that uses DWARF debug info, qbic - A tool to check for binary incompatibilities in Qt4 Toolkit, chkshlib, cmpdylib, cmpshlib - compare symbols presence.

The main steps of the automated BC analysis are the following:

Automatic detection of include paths for target library headers: Indexing of header files in system directories Recursive search for included header files Create a complete list of GCC -I options to compile headers Parse header files: Create the GCC translation unit (TU) dump for header files Parse the TU dump Create the model of library ABI Parse shared libraries: Extract the list of exported symbols Intersect it with the list of public symbols from header files Create the model of "public" ABI (you can dump it using -dump option) Compatibility check: Compare ABI models of two versions Collect the list of all ABI changes Check it against the list of known BC rules Collect the list of ABI breaks in the library Report generation: Detect the list of affected symbols for each ABI break Group ABI breaks by the level of severity (High, Medium, Low) Generate HTML report

Please send your bug reports, feature requests and questions directly to abi-compliance-checker@linuxtesting.org

The tool was developed by the Russian Linux Verification Center at ISPRAS. Andrey Ponomarenko is the leader of this project.

We would like to thank everyone who has contributed to the success of this project!

Here is the list of articles about shared libraries and ensuring binary compatibility:

KDE TechBase, “Binary Compatibility Issues With C++”, “Binary Compatibility Examples” codesourcery.com, "Itanium C++ ABI" Josh Faust, "ABI Compatibility" Les RPM de Remi - Blog, "ABI : stability check" Agner Fog, “Calling conventions for different C++ compilers and operating systems” Andreas Jonsson, "Calling conventions on the x86 platform" Thiago Macieira, “Some thoughts on binary compatibility” Pavel Shved, Denis Silakov, "Binary Compatibility of C++ shared libraries on GNU/Linux" David J. Brown and Karl Runge, "Library Interface Versioning in Solaris and Linux" HP.com, "Steps to Version Your Shared Library" developer.apple.com, "Macintosh C/C++ ABI Overview" Chad Austin, “Binary-compatible C++ Interfaces” GNU.org, "ABI Policy and Guidelines", "Binary Compatibility" Stephen Clamage, "Stability of the C++ ABI: Evolution of a Programing Language" Debian Library Packaging guide, "When binary compatibility breaks" Sergey Ayukov, "Shared libraries in Linux: growing pains or fundamental problem?" Computer Desktop Encyclopedia, "Application Binary Interface" Linux.org, “Program Library HOWTO” Ulrich Drepper, "How To Write Shared Libraries" Mike Hearn, “Writing shared libraries” KDE TechBase, “Library Code Policy” Peter Potrebic, “What's the Fragile Base Class (FBC) Problem?” symbian.org, "Preserving Compatibility" Ponomarenko A., Rubanov V., VALID 2010 "Automated Verification of Shared Libraries for Backward Binary Compatibility" FreeStandards.org, Generic ABI (gABI) Standard, "ELF and ABI Standards" Processor Supplement ABI (psABI) documents: Intel386, AMD64, PowerPC, S/390, Itanium, ARM, MIPS, SPARC, PA-RISK, M32R

New tool added - mstone

Mstone on SourceForge.net
SourceForge.net Logo

Mstone is a multi-protocol stress and performance measurement tool. Mstone can test multiple protocols (e.g. POP and SMTP) simultaneously and measures the performance of every transaction. The performance can be graphed throughout the duration of the test.

First a bit of history: Netscape Messaging Server includes Mailstone to allow customers to test their mail server installations before public roll out. Mailstone is a benchmark framework for testing mail protocols like POP, IMAP, and SMTP. However, all the new directions for Mailstone are in protocols other than mail. So we changed the name to mstone (think multi-stone) and made the source available so people can develop new tests.

Mstone gives you a lot of detailed information. It does not spit out a standardized "POPmark" number or anything like that. You could standardize a test sequence and combine the detailed numbers using a standard formula, but that's a task for people with great patience.

In order to simulate high load levels and to randomize accesses, mstone can run on multiple test client machines and the results automatically combined when the test is complete. Each client can have multiple processes and multiple threads (limited only by the OS and hardware). Simultaneous connection counts of 100,000 have be performed and higher levels are possible. For long lasting protocols like IMAP and WMAP, this is important for properly stressing the servers.

Mstone currently runs on recent versions of: Linux, Solaris, AIX, OSF, and HPUX. Any OS with POSIX threads support should be an easy port (mostly of the build system). The test client machines can each be running different operating systems. Common utilities like perl, gnuplot, and gd are needed to run mstone.

Tests are defined through workload files and command line arguments. Everything is designed to be repeatable and easily sequenced. The results are available in HTML, plain text, and as a spreadsheet import file (CSV).

Mstone should build and work on all major Unix operating systems. (read Building.txt for more details). Check out the manual. For experimental work (subversion test support, a new build system, and better reporting), check out the development docs and Building.txt. The Subversion revision control system was most recently added. Some other popular revision control systems should follow. See the complete ToDo list for more details.

The 4.2 release is the best tested. SendMail contributed a large number of updates (thanks!). When these are fully integrated, version 5.0 will be released. See NEWS.txt

Wednesday, May 4, 2011

New tool added - API Sanity AutoTest

API Sanity AutoTest (ASAT) is an automatic generator of basic unit tests for shared C/C++ libraries. It is able to generate reasonable (in most, but unfortunately not all, cases) input data for parameters and compose simple ("sanity" or "shallow"-quality) test cases for every function in the API through the analysis of declarations in header files. The quality of generated tests allows to check absence of critical errors in simple use cases. The tool is able to build and execute generated tests and detect crashes (segfaults), aborts, all kinds of emitted signals, non-zero program return code and program hanging. It may be considered as a tool for out-of-the-box low-cost sanity checking (fuzzing) of the library API or as a test development framework for initial generation of templates for advanced tests. Also it supports universal T2C format of tests, random test generation mode, specialized data types and other useful features.

  See also: Upstream Tracker for C/C++ libraries.

  We are looking for sponsorship to continue development of this tool. Please send your proposals to api-sanity-autotest@linuxtesting.org.

if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); }

The latest release can be downloaded from this page.

This program is free software. You may use, redistribute and/or modify it under the terms of either the GNU GPL or LGPL.

GNU/Linux, FreeBSD, Haiku (BeOS), Mac OS X, MS Windows (Xp, Vista, 7).

Linux: GCC (3.0-4.5.2, recommended 4.0 or newer) binutils (c++filt, readelf, objdump) Perl (base)

WARNING: if you are using ccache program (i.e. gcc points to /usr/lib/ccache/gcc) then it should be newer than 3.1.2 or disabled.

MS Windows: MinGW (gcc.exe, c++filt.exe) Active Perl MS Visual C++ (dumpbin.exe, undname.exe, cl.exe) add gcc.exe path (C:\MinGW\bin\) to your system PATH variable run vsvars32.bat script (C:\Microsoft Visual Studio 9.0\Common7\Tools\) Library Version Number of Tests Problems Found Crash (segfault, signal SEGV) Abort (signal ABRT) All emitted signals: FPE, BUS, ILL and others Non-zero exit code Program hanging Requirement failure (if specified)

For generating, building and running tests you should provide the XML descriptor for your library version. It is a simple XML-file that specifies version number, paths to header files and shared libraries and optionally some other information. An example of the descriptor is the following (0.3.4.xml):

0.3.4 /usr/local/libssh/0.3.4/include/ /usr/local/libssh/0.3.4/lib/

Command for generating a test suite:
 perl api-sanity-autotest.pl -l -d -gen 

You can view generated tests using the index file:
 tests///view_tests.html 
or manually in the directory:
 tests///groups/ 

Command for building tests:
 perl api-sanity-autotest.pl -l -d -build 

Command for running tests:
 perl api-sanity-autotest.pl -l -d -run 

After a time will be generated test report:
 test_results///test_results.html 

To improve generated tests quality, you can provide the collection of specialized types for the library.

The tool has many useful options for manipulating with the test generation and execution processes. See the list of all options on this page.

Generate, build and execute the tests for the libssh library:
 perl api-sanity-autotest.pl -l libssh -d 0.3.4.xml -gen -build -run 

Tests will be generated to:
 tests/libssh/0.3.4/groups/ 
 tests/libssh/0.3.4/view_tests.html 

The report will be generated to:
 test_results/libssh/0.3.4/test_results.html 

Generate tests in the Template2Code (T2C) format:
 perl api-sanity-autotest.pl -l libssh -d 0.3.4.xml -gen -t2c 

The package with T2C tests will be generated to:
 tests_t2c/libssh/0.3.4/t2c-libssh-tests-0.3.4.tar.gz 

Execute the tests using the Xvfb server:
 perl api-sanity-autotest.pl -l allegro -d 4.9.21.xml -run -xvfb 

Generate tests using the Splint specifications (annotations) in the headers:
 perl api-sanity-autotest.pl -l popt -d 1.16.xml -gen -splint-specs 

Trinity - The Linux system call fuzzer, iknowthis - A system call fuzzer for UNIX-like systems,

The basic idea of the test data generation algorithm is to recursively initialize parameters of a function using the values returned (or returned through the out-parameter) by other functions for structured data types (class, struct, union) or by some simple values for intrinsic data types (int, float, enum, ...). The recursion step includes the heuristic selection of the appropriate function, that should be called to initialize complex parameters for other functions. If some parameter of a function cannot be initialized, then the algorithm tries to select other function.

Let's see the example test for FT_Activate_Size ( FT_Size size ) function from the FreeType2 library:

#include int main(int argc, char *argv[]) { FT_Library alibrary = 0; FT_Init_FreeType(&alibrary);//initialize "alibrary" FT_Face face = 0; FT_New_Face( alibrary, "sample.ttf", 0, &face);//initialize "face" FT_Size size = 0; FT_New_Size(face, &size);//initialize "size" FT_Activate_Size(size);//target call return 0; }

In this test case the parameter "size" of target function FT_Activate_Size is initialized through the call of FT_New_Size function using its 2nd out-parameter. The first parameter "face" of FT_New_Size function is recursively initialized by the use of FT_New_Face function's 4th out-parameter. And finally the first parameter "alibrary" of FT_New_Face is initialized by the call of FT_Init_FreeType function on the 3rd recursion step. Other parameters of FT_New_Face function are initialized by intrinsic values.

Please send your bug reports, feature requests and questions directly to api-sanity-autotest@linuxtesting.org or post to the issue tracker at forge.ispras.ru

LSB 4.0 certification test suites for Qt3 (9792 interfaces tested), Qt4 (10803 interfaces tested) and libxml2 (1284 interfaces tested) libraries were developed with the help of this tool, also known as "AZOV Framework" in the past (2007-2009).

Add CUnit format support. See 2011 GSoC LSB projects. Extending support of Splint and ACSL annotations. Making better distinction between pointer arguments (*x) and arrays (x[]). More kinds of generated test data files (images, fonts, ...). Option for generating bound values for parameters.

The tool was developed by the Russian Linux Verification Center at ISPRAS. Andrey Ponomarenko is the leader of this project.

We would like to thank everyone who has contributed to the success of this project!

wikipedia.org, “Sanity testing in software development” wikipedia.org, “Fuzz testing” R. S. Zybin , V. V. Kuliamin , A. V. Ponomarenko , V. V. Rubanov and E. S. Chernov, “Automation of broad sanity test generation”

New tool added - Linux Upstream Tracker


This service is aimed on analyzing of the C and C++ libraries evolution.
It is looking for new releases of various libraries and checking them for backward binary compatibility. The web-service is generally intended for operating system maintainers to help in updating libraries and for software developers interested in ensuring backward binary compatibility of the API.

This service is forced by our QA solutions:

Available resources and services:
Search by name: A portable ascii art GFX libraryA library providing a non-interactive canvas for generating technical drawingsAdvanced Linux Sound ArchitectureAn asynchronous resolver libraryThe official C++ interface for the ATK accessibility toolkit libraryAn open-source molecular builder and visualization toolGPL C++ library for interfacing with the RIM BlackBerry HandheldOfficial Linux Bluetooth protocol stackThe Bonobo Component System for the GNOME Desktop PlatformC library that performs DNS requests and name resolves asynchronouslyAn audio CD reading utility which includes extra data verification featuresC++ library for creating CGI (Common Gateway Interface) programsThe CELT ultra-low delay audio codecA FITS File Subroutine LibraryGPU Shader Authoring Language (NVIDIA)C++ class library for writing CGI applicationsA library for dealing with Microsoft CHM filesAn open source (GPL) anti-virus toolkit for UNIXClassified Advertisements (ClassAds) are the lingua franca of CondorOpen source library for creating fast, compelling, portable, and dynamic graphical user interfacesThe Corosync Cluster Engine is a Group Communication System with additional features for implementing high availability within applicationsNVIDIA’s parallel computing architectureGPU-accelerated linear algebra libraryThe Common UNIX Printing SystemA full featured cross-platform Image LibraryExtensible Binary Meta-LanguageData encode/decode and storage libraryAn MPEG-4 and MPEG-2 AAC encoderC++ wrapper for fam from sgi.famA BSD-licensed C++ forward error correction libraryThe leading audio/video codec libraryAn embeddable cross-platform database engineA world-leading library for the creation and playback of interactive audioFont configuration and customization libraryA Free, High-Quality, and Portable Font EngineAn open source code library for the dynamic creation of images by programmers. GD creates PNG, JPEG and GIF images, among other formatsGeospatial Data Abstraction LibraryA set of database routines that use extensible hashingThe library for image loading and manipulation.A C++ port of the Java Topology Suite (JTS)The GNU internationalisation libraryThe OpenGL Extension Wrangler LibraryGLib provides the fundamental algorithmic language constructs commonly duplicated in applicationsAn implementation of the Unicode Bidirectional Algorithm (bidi)An implementation of Session Initiation Protocol (SIP)An implementation of the Simple Authentication and Security Layer framework and a few common SASL mechanismsThe GNU Transport Layer Security LibraryA C language library that allows to add support for cryptography to a programGeneric Security Service, a free implementation of RFC 2743/2744Implements resource discovery and announcement over SSDPA library for constructing graphs of media-handling componentsA well-groomed and well-maintained collection of GStreamer plug-insThe library for creating graphical user interfacesAn object-oriented open source framework for creating UPnP devices and control pointsA library for storing and managing dataThe Internet Communications EngineProvide Unicode and Globalization support for software applicationsA software suite to create, edit, and compose bitmap imagesThe platform-independent ODBC SDKPortable c++ library easily as Java. Include sockets, threads, io, logger, process management, graphical interface (DirectFB), and more.A library providing serialization and deserialization support for the JavaScript Object Notation (JSON) format described by RFC 4627C++ library to facilitate sending email programmaticallyA set of utilities for managing the key retention facility in the kernelA high quality MPEG Audio Layer III (MP3) encoder licensed under the LGPLSUSv2 interface to Linux kernel asynchronous I/OA cross platform audio libraryAn advanced on screen display (OSD) libraryThe library for high-performance 2D graphicsA Qt library that implements the Open Collaboration Services APIThe Audio File Library handles reading and writing audio files in many common formatsA library to record, convert and stream audio and videoThe industry-standard colour ASCII-art libraryAn implementation of the XDG Sound Theme and Name Specifications, for generating event sounds on free desktops, such as GNOMEA library for getting and setting POSIX.1e (formerly POSIX 6) draft 15 capabilitiesThe library is intended to make programming with posix capabilities much easier than the traditional libcap libraryThe Common ISDN Application Programming Interface (CAPI)C library to access data on a CDDB server (freedb.org)The multiprotocol file transfer libraryThe database-independent abstraction layer in CDiscovers, activates, deactivates and displays properties of software RAID sets (eg, ATARAID) and contained DOS partitionsELF object file access libraryA library for support of the Expert Witness Compression Format (EWF)Loki C++ library from Modern C++ DesignA Portable Foreign Function Interface LibraryA simple programming interface for decoding and encoding audio data using the Xiph.org codecs (FLAC, Speex and Vorbis)The GNU project's basic cryptographic libraryA fast, simple, small and flexible user-space graphics libraryA flexible library for input handlingAn ncurses toolkit for creating text-mode graphical user interfaces in a fast and easy wayA small library with error codes and descriptions shared by most GnuPG related softwareA standardized API used to convert between different character encodingsImplementation of the Infinote protocol (infinote.org) written in GObject-based CThe generic API allowing a driver to expose to the user space configuration and statistics specific to common Wireless LANsA library for manipulating JPEG image format filesA high-speed version of libjpegThe Mozilla's C implementation of JavaScript (SpiderMonkey)A JSON reader and writer which is super-effiecient, which runs circles around any other competing JSON engineC++ output stream interface for writing Postscript documents containing any of the world's scripts supported by Unicode 4.0 and by PangoThe runtime library from GNU libtoolAn open source C/C++ client library and tools for the memcached serverA useful collection of routines for programming. Performance and usability-oriented extensions to C.Mozilla's spidermonkey javascript engineThe abstraction layer around libmpdclient. It provides a high level access to MPD.A stable, documented, asynchronous API library for interfacing MPD in the C, C++ and Objective C languagesAn HTTP and WebDAV client library, with a C interfaceA set of co-operative tools that make networking simple and straightforwardA general purpose, double precision, Celestial Mechanics, Astrometry and Astrodynamics libraryA library that implement Microsoft's NTLM authenticationC library to generate ICMP echo requestsLibrary of Optimized Inner Loops (Oil) Runtime Compiler (Orc)Pluggable Authentication Modules for LinuxA system-independent interface for user-level packet captureThe pixel-manipulation library for X and cairoReference library for supporting the Portable Network Graphics (PNG) formatThe command-line option parsing libraryConverts Outlook PST files to mailbox and others formatsThe C library for quantum computing and quantum simulationSample Rate Converter for audioA free package management library, using SAT technology to solve requestsThe Security Enhanced Linux libraryProvides an API for the manipulation of SELinux binary policiesAllows programs to easily modify SELinux policy binariesThe X11 Inter-Client Exchange libraryProviding access to as much BIOS information as possibleA library for reading and writing files containing sampled sound through one standard library interfaceThe HTTP client/server library for GNOMEA small library for rendering Postscript documentsA patent-free audio compression format designed for speechSimple pop3 mail client libraryThe client-side C library implementing the SSH2 protocolThe Flexible Communications FrameworkFree and open video compression formatThe library for manipulating TIFF image format filesProvides a set of functions for accessing the udev database and querying sysfsThe library for writing single instance applicationThe Universal Plug and Play (UPnP) SDK for Linux provides support for building UPnP-compliant control points, devices, and bridges on LinuxThe library to enable user space application programs to communicate with USB devicesGeneral-purpose compressed audio format for mid to high quality audioThe library for importing WordPerfect (tm) documentsA client interface to the X Window SystemThe X11 Cursor management libraryThe X11 miscellaneous extensions libraryThe Xinerama Extension libraryThe C++ wrapper for the libxml XML parser libraryThe X11 toolkit intrinsics libraryThe X Record and X Test extensions libraryX11 XFree86 video mode extension libraryThe C library for reading, creating, and modifying zip archivesA new userspace toolset that provide logical volume management facilities on linuxA high-quality MPEG audio decoderAn embedded SSL and TLS implementation designed for small footprint applications and devicesA scalable, high-performance, open source, document-oriented databaseThe fast and free console based real time MPEG Audio Player for Layer 1, 2 and 3Kernel multi-touch transformation libraryThe MXP library implements the parser for the MUD eXtension protocol. This protocol aims to provide a better experience for MUD playersA very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database serverA C++ wrapper for MySQL’s C APILibrary for developing network-based applicationsThe C++ netCDF DAP2 Client LibraryThe OpenAIS Standards Based Cluster Framework is an OSI Certified implementation of the Service Availability Forum Application Interface Specification (AIS)A cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applicationsA chemical toolbox designed to speak the many languages of chemical dataA library of programming functions for real time computer visionThe OpenLDAP Lightweight Directory Access Protocol APIAn open source PAM library that focuses on simplicity, correctness, and cleanlinessOpen Robotics Automation Virtual EnvironmentA FREE version of the SSH connectivity toolsThe NVIDIA® OptiX™ Ray Tracing EngineOS Abstraction Layer library from NASA/GSFCA system designed to make installing and updating software on your computer easierThe library for layout and rendering of internationalized textPerl Compatible Regular ExpressionsA multimedia API for KDE developersCross-platform software package for creating scientific plotsC++ class libraries that simplify and accelerate the development of network-centric, portable applications in C++An application-level toolkit for defining and handling the policy that allows unprivileged processes to speak to privileged processesA PDF rendering library based on the xpdf-3.0 code basePortable Cross-Platform Audio I/O LibraryA powerful, open source object-relational database systemAn intelligent predictive text entry systemCartographic Projections LibraryA Qt Cryptographic ArchitectureA qt-based library that maps JSON data to QVariant objectsA collection of APIs and frameworksCross-platform application and UI frameworkC library to communicate with network devices by MikroTik running their Linux-based operating system RouterOSA library for performing atomic creation and replacement of filesThe SceniX scene management engineA cross-platform implementation of the Dirac video compression specification as a C libraryThe main core of the Spatial DBMS engineIntel® Threading Building BlocksA port of Suns Transport-Independent RPC library to LinuxA graphical user interface toolkitAn open source project that implements the ODBC APIAn implementation of the GEIS (Gesture Engine Interface and Support) interfaceGesture Recognition And Instantiation LibraryGoogle's open source JavaScript engineVideo Decode and Presentation API for UnixThe X C-language Bindings libraryThe Xen® hypervisor, the powerful open source industry standard for virtualizationA fast, flexible and reliable cross-platform database engine derived from FLAIMA modular implementation of XML-RPC for C and C++The Xvid video codec implements MPEG-4 Simple Profile and Advanced Simple Profile standardsThe zlib compression and decompression libraryTimeline of unintentional ABI breaks