ROOT Version v5-28-00 Patch Release Notes

A new production version ROOT v5-28-00h has been released November 24, 2011.

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

/afs/cern.ch/sw/lcg/app/releases/ROOT/5.28.00h/

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

ftp://root.cern/root/root_v5.28.00h.source.tar.gz

Alternatively get the source from Subversion (broken) using:

svn co http://root.cern/svn/root/tags/v5-28-00h root

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

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

svn co http://root.cern/svn/root/branches/v5-28-00-patches root

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

  • Cint
    • Import patch #42805 fixing the problem #83909 which leading to failure of the auto-dictionary generator when dealing with class template inside a namespace.
  • Core
    • Import patch #42757 fixing memory leak due to multiple allocations of gLibraryVersion.
    • Add missing implementation for TGenericClassInfo::GetDirectoryAutoAdd.
  • Proof
    • Adapt patch #42671 fixing a problem with TProof::Load reported in the PROOF forum, caused by the fact that the additional files were not copied in the master sandbox but left in the cache.
    • Import patch #42904 in TProofOutputFile changing the default mode for merging histograms in TFileMerger, to reduce the memory footprint.
    • Import patch #40744 fixing usage of enums in the PDB macro in TProofMonSenderML and TProofMonSenderSQL.
    • Adapt/import patches #38922 and #42921 to add the possibility to disable reconnections via the variable TXSocket.Reconnect (0 disable reconnections; default is 1) .
    • Import patch #43245 fixing an issue with forcing local copies of files before merging (bit not always honored).
  • TTree
    • Resolve #89645 which could lead to segmentation fault when writing a sparse branch (in a large TTree) with a very long branch name.

Changes in version v5-28-00h (November 24, 2011)

  • Proof
    • Import patches #40912 and #40923 adding the possibility to skip the checks for the data directories during session startup, as they may significantly slowdown the startup process is the medium is busy.
    • Import patches #41313, #41336, #41355, #41378 and #41383 fixing unprivileged multi-user support and access control.
    • Import patches #41393 and #41399 fixing possible issues with PATH and LD_LIBRARY_PATH settings for proofserv.
    • Import patches #40576, #40699 and #40758 with the improvements in PROOF monitoring.
    • Import patch #41493 fixing return codes on TProof::EnablePackage(...) failures.
    • Import patches #41785 and #41786 fixing an issue with packetizers preventing proper entry range processing and the file ordering in datasets.
  • Build System
    • Enable configuration of internal CINT array sizes (r42192 r42209, #88752).

Changes in version v5-28-00g (September 14, 2011)

  • Core
    • Import patch #40534 to silence spurious warnings when removing objects from TObjectTable.
    • Allow home directory to be specified via HOME shell var in case there is no correct passwd file entry, fixes issue 83268
  • IO
    • Fix the handling of emulated class containing variable size array of objects.
    • Update MakeProject to properly handle classes containing variable size array of objects.
    • Prevents a memory leak in the handling of associative containers stored in a TTree, fixes issue #85910
  • Tree
    • Lift ancien restriction (imposed by VC++6) preventing the proper use of unsigned long long by TTreeFormula.
  • Proof
    • Import new version 0.9.6 of afdsmgrd (patch #40573) with improvements needed by ALICE.
    • Import patch #40659 fixing a possible seg violation when exiting ROOT.
    • Import patch #40660 restoring operability of the dynamic startup (broken by patch 36553).

Changes in version v5-28-00f (August 8, 2011)

  • TTree
    • Import fix #40077 to prevent the use of non-existent memory when reading in an object that is part of an STL collection and which used to contains an embedded object (and this data member has been removed)(bug #83793).
  • Hist
    • Import fix #39628 in TH1::LabelsInflate or Deflate (bug #83066).
  • Proof
    • Import new version of afdsmgrd (patch #39968) with a fix needed by ALICE.
    • Import patch #39442 and #40186 improving histogram merging by using TH1::Add when the axis are equal; this is much faster than TH1::Merge and uses less memory.
    • Import patch #40017 making the query exit status available for monitoring and in the output list.
    • Import patch #37663 consolidating the behavior of TProof::ClearPackages.
    • Import patch #40359  fixing an issue showing up in PROOF-Lite when merging via files.
  • Netx/Xrootd
    • Import patches #40435 and #40436   to fix the issues preventing proper notification of XrdClient authentication errors.

Changes in version v5-28-00e (June 21, 2011)

  • Build System
    • Additional fix for Ubuntu 11.04.
  • Proof
    • Import patch #39152 improving solidity of file name matching in TPacketizerFile.
    • Import patch #39171 fixing merging of TProofOutputFiles with submergers (see http://root.cern/phpBB3/viewtopic.php?f=13&t=12598).
    • Import patch #39173 to include transmission of the orginal weight to TProofDraw is 'DrawSelect' operations. See http://root.cern/phpBB3/viewtopic.php?f=13&t=12728 .
    • Import patch #39309 importing version 0.9.3 of afdsmgrd.
    • Import patch #39579 avoid a segmentation fault when reading file where the AutoFlush mechanism has been disabled and the TTreeCache is requested nonetheless.
    • Import patch #39580 fixing an issue with connections via a SSH tunnel.
    • Import patch #39585 and #39835 fixing an issue preventing the correct handling of a 'Stop' request.
    • Import patch #39835 fixing an issue screwing up the number of events to be processed when specified; the patch also fixes an issue with the option 'ForceLocal' on 'file:///' URLs.
  • Core
    • Help rootcint survive Linkdef.h line containing only '#' (r39158, r39160).
  • IO
    • Fix an issue when reading file that prevented the proper reading of the TObject::fBits when TObject is in a split TTree, which prevented the proper registering of referenced objects (See report #80907).
  • TTree
    • Reduce the memory used by a TTree by sharing the scratch buffer used to hold the compressed data.
    • Avoid an infinite loop in the TTreeCache when reading a small file that has not been clustered See Savannah #82337.
  • Xroot integration
    • Add xrdsssadmin to the list of exported xrootd executables.
    • In XrdSecProtocolkrb5, make sure that the client is in front of a terminal before issuing a 'kinit'. Final protection against the 'kerberos issue'. Imported from HEAD.
  • Geometry
    • Geometry imported from HEAD. This contains several fixes related to navigation functionality close to boundaries.

Changes in version v5-28-00d (May 7, 2011)

  • Build System
    • Add support for Ubuntu 11.04 (fixes issue #81624).
  • Proof
    • Import the dataset stager daemon (afdsmgrd).
    • Import patch #39074 in TProof and TProofServ, fixing an issue affecting the result of subsequent worker activation/deactivation requests when worker ordinal numbers were not in increasing order; the patch also adds support for block requests and for a return code with the result of the action.
    • Import patch #39088 fixing some issues in TPacketizerUnit, particularly visible in clusters with inhomogeneous machines.
  • CINT
    • Recognize protected, static data members in base classes (r38962)
  • Core
    • Fix memory corruption when piping from a file (r38967 r38968, #78460).
    • Allow for spaces between '#' and "pragma" in Linkdef.h (r39093, #80481).
    • Add missing initialization of TClass::fStreamerFunc.
  • IO
    • Avoid spurrious warning message when reading file with a TTree writen with ROOT 5.29/03 or later:Warning in <tstreamerinfo::compile>: Counter fNClusterRange should not be skipped from class TTree</tstreamerinfo::compile>
    • Avoid spurrious warning message when reading a file containing an 'empty' collection whose content has gone through schema evolution: Error in <tbufferfile::readversion>: Could not find the StreamerInfo with a checksum of - 849380031 for the class "NeverWritten" in memberwise.root.</tbufferfile::readversion>
  • TTree
    • In TBranchRef, avoid re-reading the same entry too many times.

Changes in version v5-28-00c (Apr 15, 2011)

  • Build System
    • In ./configure don't use xml2-config when --with-xml-incdir and --with-xml-libdir are set (fixes issue #79835).
    • Build the AliEn plugin when XRD is being build or available.
  • Core
    • Finally added support for floating point exception handling on MacOS X. The issue is that OS X uses the SSE unit for all FP math by default, not the x87 FP unit, so one has to use _MM_SET_EXCEPTION_MASK.
    • Prevent crash in rootcint when too few parameters are passed.
  • IO
    • Fix support for the automatic addition to the current directory (for TTree and TH1 for example) in TKey::Read(TObject*)
  • Tree
    • Improve performance of the BranchRef mechanism (by avoid duplicate reading of the RefTable)
    • Prevent segmentation fault when re-using a TTree object to read from a file (fixes issue #79648).
    • Fix the reading of THashList when stored in TTree (see this report in the forum.)
    • Fix a typo in the code generated by MakeProxy that prevented the dictionary generation for some of the STL containers used in the proxy.
    • Fix the reading of file produced by v4.00/08 where some of the (rarely used) baskets were not completely initialized properly.
    • Honor the flag TSelector::kAbortFile in TTree::Process.
  • Proof
    • Import patch #38226 in test/stressProof.cxx, fixing the order in which objects are destroyed at the end of the test.
    • Import patch #38538 fixing a problem with the interrupt of sockets turning 'bad'. Should solve some of the cases were slow response was experienced.
    • Import patches #38570,#38574 adding support for log file truncation.
    • Import patches #38572,#38575 to filter out PROOF internal objects when displaying or printing the output list.
    • Import patches #38580,#38581, #38588, #38632, #38765 fixing a problem with log path transmission when the node dies early or not even starts.
    • Import patches #38220, #38221, #38222, #38227, #38228, #38577, #38593, #38594 , #38600 adding the possibility to access the files on the workers via the same port used by PROOF.
    • Import patches #38616 fixing a bug while checking the first event against the file event ranges; the bug was introduced in 5.28/00 and the effect was that any specification of the number of entries to process was ignored.
    • Import patches #38618 fixing an issue with setting the default output file name when merging files with TProofOutputFile.
    • Import patch #38691 in TProofOutputFile, fixing issue affecting the case when temporary files are created on a shared file system other than the one with the sandboxes. This case, which seems to be a rather common one, should be now fully supported.
    • Import patches #38758 and #38760 adding missing calls to closedir() and TSystem::FreeDirectory. This solves the problem of open file descriptors in for xproofd after a scan of a dataset directory tree.
    • Import patch #38810 to correctly honour the TSelector::kAbortFile settings during processing. This patch also fixes other related issues, in particular with the reporting of the non-processed {files, events} in the final 'MissingFiles' list.
    • Import patches #38709 and #38779 improving the monitoring to send additional information about memory usage during the query, the name and size (# of files) of the dataset processed (if any). It also adds the possibility to send the information to multiple monitoring collectors. Documentation updated at http://root.cern/drupal/content/enabling-query-monitoring (broken).
    • Import patch #38720 fix a problem in pq2-ana-dist with the labels of the distribution histogram, occurring when machines are represented by IPs instead of FQD names
  • GUI
    • Fixed a bug preventing to browse geometries inside ROOT files.
  • Graf
    • Fix a precision problem in the text positioning in TPostScript.cxx. When the pad limits along X or Y were very close the text position might be wrong. This was found thanks to the test #15 in stressGraphics. The text position is now computed using double precision variable only.
    • Like SetPoint the method Apply modifies the graph content. So, a logic similar to the one implemented in SetPoint should be done, ie:
      1. if fHistogram exists it is reset.
      2. if gPad exist a gPad->Modified() is issued.
  • PyROOT
    • Fix for #79685, where methods of python classes got mixed up when loaded into CINT (the overloads where selected on return type, now on return type and full, scoped method name). Additionally, automatic memory management and casts of TPyReturn should be more easy to deal with.
  • Hist
    • Fix the merge of histograms with labels
    • Fix various bugs when using the buffer (automatic binning)  
    • Fix for TProfile::Merge (bug #79765)
    • Fix in all the TH2::Projection and TH3::Projection the compatibility with a previously existing histogram (bug #78745)

Changes in version v5-28-00b (Mar 16, 2011)

  • Build System
    • For Windows build, fix a fatal error when parsing the -optimize:0 flag.
    • Another attempt to fix an issue when the build directory path name contains a "...-x...", #76844.
  • CINT
    • Fix lookup of functions with prototype when one of the parameters is of function pointer type (r38251, #78657).
    • Don't try to invoke destructors of unnamed structs (r38253, #78837).
    • Don't prepend prec_stl to headers included for automatic dictionaries (r38272, vector<vector<int> > at forum).
    • Fix #pragma link C++ class NameSpace::*; which before was only creating a dictionary for the first class (r38281).
    • Do not treat a failure in opening a shared library as an interpreter error (r38377, #78511).
    • Cintex
      • Fix iotype directive (selection property) for non-structs (request by CMS, r38204).
      • Do not give up on transient members even if their type is not known to Reflex but is known to CINT (r38203).
  • IO
    • Prevent the incorrect reading of the content of a base class that was streamed member-wise.
    • Remove spurious message in the handling of STL containers (#78789).
  • TTree
    • Fix the issue with TTree::Draw, SetMakeClass and collection reported in this forum post.
    • Fix the case of a split collection containing at least one data member which is an instance of class with one or more base classes that can not be split (for example std::vector). See savannah #79235.
  • Proof
    • Import fix #38215 adding a missing protection in TFileInfo::Print().
    • Import patches #38347 and #38348 in PROOF-Lite fixing a problem with passing the 'varexp' and 'selection' strings for processing, preventing correct usage of the operators '|' and '||' in TTreeFormula, and making sure that the required dataset is registered when such option is specified in TProofOutputFile.
    • Import patch #38380 fixing a possible truncation in the TProofOutputFile constructor when 'Proof.Localroot' is defined.

Changes in version v5-28-00a (Feb 21, 2011)

  • Build System
    • Fix an issue when the build directory path name contains a "...-x..." (r37621, r37720).
    • Check consistently for Fink or MacPorts libraries. Fixes #76678.
    • Fix for redhat and debian targets. Fixes #77308.
    • Several of out-of-source build fixes.
    • Fix for building using gcc 4.6 (#77991).
    • Allow external libafterimage > 1020 (#77990).
    • Remove unneeded dependencies for linuxppc and linuxppc64 (#77989).
    • Fix for check_lib64() in ./configure misreporting 32-bit libraries. Fixes issue 78398.
  • Core
    • Added two new macros in RVersion.h, ROOT_FULL_VERSION_CODE and ROOT_FULL_VERSION(a,b,c,p).
    • Fixes in TRef::SetAction(). Fixes 77570 and 77725.
    • Fix initialization of noTree in hadd (77981).
    • Avoid unneeded TROOT::LoadMacro() call when loading a plugin.
    • Import patch #38109 fixing a the MD5 initialization in TFileInfo.
    • Fix in TList::Delete(), check for 0 before dereferencing. Fixes issue 78529.
  • Cint
    • Insure that CINT and ROOT are initialized before initializing Cintex.
    • Make sure that .x script.C is actually executed by CINT even when being called indirectly (for example via a call to TApplication::InitializeGraphics triggered by a library autoload) in the middle of a CINT code section where noexec has been set to true (for example the parsing of another script that is being loaded). (Fix Savannah #76526.)
    • Implement x86-64 support for varargs without horrendous assembler code. Makes the code independent of any low level compiler changes and fixes clang support.
    • Fix dictionary for seekdir() on newest Cygwin (r37726).
    • Provide default argument for set's second template parameter (bug #76671, r37737).
    • Fix parsing of spaces-in-structs (r37746, r37748).
    • Enable Qt CINT dictionary for current (4.7) versions (r37747).
    • Fix #inclusion of ROOT headers in automatic dictionary generator (forum, r37774).
    • More fixes to parsing spaces in type names in declarations (r37777).
    • Function arguments of type pointer to function returning long xyz lost their long part: fixed (r37783, r37785).
    • Unloading libraries was sometimes causing errors with the (re-)initialization of unrelated libraries (r38154).
  • I/O
    • Fix typo in TStreamerInfo.h (#76697).
    • Fix the reading of empty collection of object when reading without the library.
    • Improve error recovery in case of corrupted zipped buffer.
    • Properly set the 'optimization' of the StreamerInfo when the StreamerInfo in memory and the StreamerInfo on a file for the same class do not agree/match (thus avoiding a segmentation fault when a StreamerInfo with the wrong optimization level is used).
  • TTree
    • Fix the implementation of TChain::ResetBranchAddress(TBranch *).
    • Fix memory leak in TTree::OptimizeBasket.
    • Fix the behavior of TTreeCache when reading the file backward and when reading older not clustered files.
    • In TTreeCloner, add a new option to re-introduce the ability to clone into a TTree that has more branches than the input TTree.
    • Fix support for option 'a' for TGraphs in TTree::Draw (#77706).
    • Significantly improve the performance of TTree::SetBranchAddress and TBranchElement::SetAddress.
    • Prevent the unlimited growth of the TBasket's buffer even if the basket is reused.
    • Put TBranchElement::ValidateAddress() inline in header.
  • Graf
    • Revision #37541 created a problem with COL option displayed in LogZ.
  • Proof
    • Import fix #37664 fixing a crash when running vs servers not having the fix for the missing files list (< 5.28/00)
    • Import fix #37894 adding support for option ':lite:' to TProof::GetDataSets; this allows to fill the map with only the summary information about the datasets (the header of TFileCollections), significantly increasing the speed and the memory footprint when the number of datasets is very large. Should solve Savannah issue #77303
    • Import fix #37897 adding support for '.' in user names in dataset paths (see Savannah issue #77378)
    • Import fix #37934 in TDataSetManagerFile::NotifyUpdate, improving handling of the case when the file with the global list of datasets does not exist. Fixes an error occurring in new installations or with new dataset directories.
    • Import change #37942 in TProof::Load, adding support for multiple-file specification. See also #37976.
    • Import patch #37951 fixing an issue with the port when using bonjour for worker auto-registration.
    • Import patch #37969 fixing a bug affecting the order in which query results are registered when two queries started within the same second.
    • Import patch #37976 fixing an issue with worker names in PROOF-Lite.
    • Import patch #37980 fixing an issue with event number ranges in the packetizers.
    • Import patch #38102 fixing an issue with enabling packages with option 'notOnClient' in PROOF-Lite.
    • Import patch #38142 fixing a possible appearance of spurious log messages in PROOF-Lite.
    • Import patch #38143 defining envs ROOTPROOFCLIENT and ROOTPROOFLITE when appropriate, so that they can be used in BUILD.sh and/or SETUP.C .
    • In TProofMgrLite, import patch #38177 fixing an issue with the validity check for existing sessions.
    • In TProofMgrLite, import patch #38180 fixing a few issues in the SQL monitoring interface.
  • Hist
    • Import fix #37701 for the drawing of 2D TEfficiency objects 
    • Fix bug #77149 in LabelsDeflate for TProfile (imported the fix #37911)
    • Fix a bug in TProfileXD::GetStats which is affecting the global effective entries (bug #77751)
    • Fix TEfficiency::Draw() and possibility to pick and change axes ranges
    • Fix TGraphAsymmErrors() for the case of weighted histograms (bug #78249)
    • Fix a bug when fitting a TH2 with a 1D function
  • Geom and GDML
    • Fix string handling issues.
  • GUI
    • Fix problems with context menus as reported on the forum
    • Only call XFreeColors if we are on a <= 8 plane machine (to match calls to XAllocColor). This fixes the bug #77329
    • Allow to override CTRL+S behavior by using the TGMainFrame::BindKey() function. Fixes the bug #78057
  • RooFit / RooStats
    • RooFit
      • Added protectNegativeMean(bool) optional to gracefully handel cases when expectation is negative
      • Added setNoRounding(bool) option to switch between rounding number of events
        Incremented version number for schema evolution
    • RooFitCore
      • Added handeling of a special case in analytic integral for RooRealSumPdf
    • RooStats
      • Fixed printout in number of toy MC used in FeldmanCousins and NeymanConstruction 
      • Added SetOneSided(bool) option to ProfileLiklihoodTestStat for one-sided upper limits
      • Fixed a bug in LikelihoodInterval when having constant parameter
      • Add missing default constructor (needed for PROOF) in NumEventsTestStats
      • Fix calculation of p values and errors in HypoTestResult for discrete distributions and for weighted sampling.
      • Added SetPOIPointsToTest(RooAbsData) method to FeldmanCousins tool, so that user can have control over which points in the parameter of interest to test (still using "profile construction" for nuisance parameters).  Additionally, added SetParameterPointsToTest, that has the same functionality as NeymanConstruction::SetParameterPointsToTest. 
    • HistFactory
      • Fixed header definition in PiecewiseInterpolation
      • Added analytic integration in PiecewiseInterpolation
      • Added HistoToWorkspaceFactoryFast and MakeModelAndMeasurementsFast which implement the equivalent model produced by the original HistFactory, but in "standard form" instead of "number counting form".  Instead of splitting the histogram into bins and having a RooPoisson for each bin, this makes an extended Pdf with that interpolates between RooHistFuncs.  For situations with many bins, this is 5-15x faster and uses much less memory.  This model also works better with tools that require toy Monte Carlo.  This new model is the new default in hist2workspace.  The old model is still available with hist2workspace -number_counting_form input.xml.
      • Fix dictionary on Fedora (r38188, issue #78554).
  • Xrootd
    • New version 3.0.2

See the release notes for what is new in the version 5.28/00 production release.

</div>