ROOT Version v5-22-00 Patch Release Notes

A new production version ROOT v5-22-00j has been released Mar 31, 2010.

Binary tar balls are not available for patch releases.

The AFS version of v5-22-00i for many different platforms and compilers can be found at:


The complete source tree for all systems (23.5 MB) is available here:

Alternatively get the source from Subversion using:

   svn co root

After obtaining the source read the file README/INSTALL (in short just do: cd root; ./configure; make).

To get the source of the head of the v5-22-00-patches branch do:

   svn co root

Changes in the head of the v5-22-00-patches branch

  • IO
    • Added support for reading file written by 5.27/02 and containing a data member like:
           std::container *fDataObjects;
      which has been streamed member-wise (see revision r33173 of the trunk).
    • Prevent the use of an optimized StreamerInfo when reading a collection streamed member wise. The solves the issue 73642 reported in Atlas' Savannah.
    • Avoid spurrious warning message when reading file with a TTree writen with ROOT 5.29/03 or later:
      Warning in : Counter fNClusterRange should not be skipped from class TTree
  • Xrootd
    • Import fixes #33677 fixing a fake authentication failure with proxies created by voms-proxy-init when the input certificates are PKCS12-formatted
  • CINT
    • Prevent buffer overrun due to long include directives (issue #68546, r33793).

Changes in version v5-22-00j (Apr 23, 2010)

  • Core
    • Prevent object related to TClass and CINT from being allocated inside a TMapFile.
    • Support cross-compilation of 32-bit binaries on MacOS X 64-bit.

Changes in version v5-22-00i (Mar 31, 2010)

  • Xrootd
  • Meta
    • Add dictionary for vector<pair<int,int> > used in TSchemaRule (r32475, bug #53130).
  • I/O
    • Avoid spurrious warning message when reading file produced by ROOT v5.27 and above.

Changes in version v5-22-00h (Feb 8, 2010)

  • Xrootd
    • New version (v20100205-0000) containing several fixes needed in particular by ATLAS; this includes the new SSL module for authentication needed by Castor.
    • Import  crucial fix #32322 on for the krb5 security module
  • Krb5auth
    • Import patches #29438 and #29474 in krb5auth to fix building issues with current linux distribution (e.g. kubuntu)
  • Netx
    • Import the relevant parts of patch #30949 adding the possibility to set on the fly (via the option field of the URL) the new read-ahead policies explicitely introduced in XrdClient for ATLAS.
  • I/O
    • Fix in TXNetFile, TRFIOFile and TDCacheFile for accessing members in a zip archive Plugin <em></em> Not Found.
    • Add support reading TWebFiles via a web proxy.

Changes in version v5-22-00g (Jan 22, 2010)

  • Core
  • CINT
    • Fix deprecation warnings for Python 2.6 (r32033, issue #61490)
    • Work around warning "cast from pointer-to-function and pointer to object" in some Reflex dictionaries. (r32074 r32090, bug #61758)
  • I/O
    • TDCacheFile: fix regression which caused dcap://host:port/path to fail.

Changes in version v5-22-00f (Dec 7, 2009)

  • Core
    • On MacOS X determine correct ROOTSYS in case is a symlink (as was already done on Linux systems).
  • I/O
    • TDCacheFile: dCap client does not ignore ?filetype=raw and other options, so remove it. Fixes issue #57409.
    • TDCacheFile: increase readahead size from 8k to 128k and make it settable via DCACHE_RA_BUFFER env var.
    • Make vector<long> and vector<long long> equivalent (and hence suppress: TStreamerInfo::BuildOld:0: RuntimeWarning: Cannot convert DataHeaderElement_p2::m_Hashes from type:vector<unsigned long long> to type:vector<unsigned long>, skip element )
    • Fix the reading of the TFile title in the header for file produced with v3 or older and for file larger than 2G
    • Saves about 20% CPU time for I/O with Atlas AODs by not injecting the Streamer() trampolines in Cintex
  • TTree
    • Fix the FastCloner re-ordering of basket per entry when the baskets are synchronized across branches (this happens after a good OptimizeBasket of the tree).
  • PyROOT
  • Reflex
    • Allow softlinks when locating (r31534 r31543 r31556 r31563, issue #59896)

Changes in version v5-22-00e (Oct 11, 2009)

  • MacOS X Snow Leopard
    • Support for 32-bit build on 64-bit Snow Leopard.
  • TTree
  • Core
    • In TUnixSystem and TWinNTSystem, change the dynamic library search order. First look into LD_LIBRARY_PATH (or PATH on Windows) and then in what is specified in Root.DynamicPath. This allows by changing LD_LIBRARY_PATH to search for alternative versions of plugins without changing the rootrc file(s).
    • Fix in root-config a problem with relative symbolic links.

Changes in version v5-22-00d (July 27, 2009)

  • MySQL
    • Fix portability problem between 32 and 64 bit as long is not a portable type.
  • Core
    • Fix tab completion for the case
         root [0] .x tutorials/ [TAB]
    • Add support for skipping the reading of the $HOME/<name> (e.g. $HOME/.rootrc) resource file. To do this set the shell variable ROOTENV_NO_HOME. This might be useful in case the home directory resides on an automounted remote file system and one wants to avoid this file system from being mounted. Fix for issue Plugin <em></em> Not Found.
  • CINT
    • Speed up the dictionary initialization: nlogn instead of n^2. (r29297, issue #52457).
    • Fix the implementation of ShowMembers in the case where the members of a class with a genreflex dictionary are of type with a rootcint dictionary and no genreflex dictionary.
  • TTree
    • Insure that the TTreeCloner (fast merging) is able to also copy 'uninitialized' TStreamerInfo describing abstract classes (This fixed savannah report #52856)
    • Enhance support for reading class (A) stored in a vector where one the member is no longer part of the current class layout (of class A) and the member is a class type .
  • I/O
    • Fix the initialization of the checksum information for a TSchemaRule (hence fixing the lookup based on checksum)
  • PyROOT

Changes in version v5-22-00c (June 27, 2009)

  • CINT
    • Only use workaround against Microsoft compiler bug ('unused' returned reference for forward declared classes, see v5-22-00b) on Windows; silences (correct) warnings on other platforms (r28683).
    • Typedefs that are defined in a scope that is not part of the dictionary will not get an entry in the rootmap file, (r29026, issue #51846).
  • TTree
    • Several fixes to properly support "flushing the write basket before streaming the branch".
  • PyROOT
    • Fix a crash while loading 'std::set'. This fixes issue #49779.
  • rootcint
    • Correct algorithm to find ROOTSYS, now it works also if rootcint is a symlink.

Changes in version v5-22-00b (May 14, 2009)

  • Base
    • In GetOptions() fix parsing of script names with + somewhere in path.
    • Roll back mod made in r25519 which was not a good idea as it required the user to make two gStyle->Set... statements to get a white canvas.
  • I/O
    • Prevent a potential infinite loop when reading the StreamerInfos.
  • TTree
    • Improve performance of read back of sub-branches contains stl container of simple types
    • Prevent an infinite loop when reading a file containing a class which is split and has a vector member that has been removed in the current class layout.
    • Enhance support for reading class (A) stored in a vector where one the member is no longer part of the current class layout (of class A)
  • Meta
    • Support the case where loading the library needed for an autoload entry does not lead to the loading of a CINT dictionary; This happens if the library has a Reflex dictionary and Cintex is not enabled.
    • In TClass::Clone, insure that the copy is using the same 'dictionary' as the original so that it is really setting up an alias.
    • Insure the autoloader is properly enabled when it is needed (for example after an explicit call to TSystem::Load even without a TApplication object).
  • Cint
    • Insure that the creation and deletion of object in Cintex matches the way object are created and delete by the compiler.
    • Fix a silent corruption of the I/O system that can be triggered by a call to UpdateMembers() before Cintex got invoked. (r28049, issue #48338)
    • Call TypeBase::Deallocate() instead of ::op delete in Reflex::Class::Destruct(), and only if requested. (r28086, issue #47076)
    • Allow transient declarations even for typedef-to-class. (r28335 + r28374, issue #49472)
    • Fix invalid memory access in ~ScopeBase() after UpdateMembers(). (r28337, issue #49533)
    • Silence warnings when compiling Reflex dictionaries with -pedantic (r28394, issue #49792)
    • Do not try to automatically create a dictionary for template classes that were loaded via CINTEX (r28415, issue 49926)
    • Work around a silly error generated by the Microsoft compiler when seeing an 'unused' returned reference to a forward declared class.
  • Graf
    • Fix in PaintAxis: the option "U", for unlabeled axis, was not implemented in case of alphanumeric axis' labels.
  • Hist
    • Fix bad side effect introduced in revision 28200 in TGraph::GetHistogram().
  • Geom
  • MathCore
    • Fix bug Plugin <em></em> Not Found in fitting TGraphErrors 
    • Fix a problem in likelihood fit caused by negative pdf values
    • Fix a bug in creating the Integrator class when MathMore is not built.
  • SMatrix
    • Remove tolerance check when inverting matrices (both with BK or LU methods)
  • Xrootd
    • Import fixes in the security modules
  • Proof
    • Fix problem with handling entry lists
    • Fix problem with retrieving files from the cache
    • Fix problem with schema evolution
    • Fix problem causing random crashes when asking for the memory plot

Changes in version v5-22-00a (Feb 12, 2009)

  • Misc
    • Add support for Microsoft Visual C++ version 9.0
  • Base
    • Fix issue Plugin <em></em> Not Found, crash caused by PATH being larger than 8192 characters.
    • Fix issue Plugin <em></em> Not Found, determination of ROOTSYS broken when libCore is in a symlinked path.
    • Fix root-config, determination of ROOTSYS broken when root-config is in a symlinked path.
    • Fix issue in TFolder::ls() not handling wildcards properly.
  • Meta
    • Implement TClass::Clone (It replaces the copy constructor which was removed)
    • Suppress error message in TClass::BuildRealData if the class is used 'only' for a transient member.
    • Implement new mode 1<<7 for TClassEdit::ShortType() to strip off default template parameters.
    • Fix issue Plugin <em></em> Not Found, genreflex failing for functions taking multidimensional arrays.
    • Prevent a segmentation fault and reintroduce the proper warning message when a file contains an empty collection of long double.
  • TTree
    • Force the TStreamerInfo used by a split branch to be non-optimized.
    • Fix the logic when trying to match the branch from one tree to the other (avoid an infinite loop if the first branch is missing in the new tree).
  • PyROOT
    • Fix for issue Plugin <em></em> Not Found.
    • Windows: Create the Python module libPyROOT.pyd from libPyROOT.lib instead of copying it from libPyROOT.dll. This solves a problem in GaudiPython.
  • CINT / Reflex
    • Fix issue Plugin <em></em> Not Found, genreflex failing for functions taking multidimensional arrays. (r27214)
    • Don't cache Reflex::Members. Repairs Cintex for classes with duplicate dictionaries. (r27303)
    • genreflex: prepend return type of shadows' final overriders by '::' where applicable; fixes issue Plugin <em></em> Not Found. Also keep constness of original return type. (r27305)
    • Correct CINT's handling of unsigned numbers larger than INT_MAX. (r27306)
    • When looking up list<A>::iterator, list<A> was looked up only as a struct, where in fact (for CINT) it's a typedef. This prevents template instantiation (which fails during library load) and autoloading in the case of rootmap (re-) registration for types like list<A>::iterator. (r27310)
    • Reflex::Type::SizeOf() was giving the wrong answer if the underlying type was not yet initialized when the derived type (e.g. array, typedef) was built; see issue Plugin <em></em> Not Found. (r27325)
    • Remove stray spaces in genreflex-created rootmap files for types containing (basic_)string as template argument. (r27408)
    • Insert basic_string&ltchar> through Cintex for backward compatibility reasons. (r27408)
    • Rename unsigned int template arguments as provided by GCCXML to not end on "ul", fixing issue reported by Atlas with boost::array. (r27408)
  • Fitting (MathCore + Hist)
  • TAlienFile / xrootd
  • XrdProofd
    • Fix a free/delete mismatch possibly causing a segv when restarting the daemon
    • Fix a backward-incompatibility issue causing the error message "unknown action code: 5112"
  • Xrootd, import of fixes from the CVS head:
    • for possible crashes of the daemon after a 'prepare'.
    • improving the server hostname check in GSI authentication.
  • Hist
    • Fix issue Plugin <em></em> Not Found in TH3::Project3D for the error calculation in case of weighted histogram (or when using option "E") and no axis range is set.