Project

General

Profile

gm2ringsim

gm2ringsim is part of the g2sim simulation suite.

Current problems and work-arounds

REFLEX: Attempt to change the size of the class

If you set up gm2 v201211_1 and then build gm2ringsim yourself and then try to run, you'll get an error

%MSG
terminate called after throwing an instance of 'Reflex::RuntimeError'
  what():  REFLEX: Attempt to change the size of the class gm2ringsim::StrawArtRecord
Aborted

The work-around

After sourcing your localProduct setup script, execute the following command (best to cut and paste),

export LD_LIBRARY_PATH=`dropit -p $LD_LIBRARY_PATH 'gm2ringsim/v0_0_1'`

Discussion

When Art starts, it scans all libraries in LD_LIBRARY_PATH looking for Root dictionaries, like libgm2ringsim_strawtracker_dict.so and libgm2ringsim_strawtracker_map.so. Apparently, if an object is specified in more than one dictionary library, Root compares the new object with the old object and if they are different, it gives this error. That's what's happening here. This release, gm2 v201211_1 has a built gm2ringsim. If you build gm2ringsim yourself, you make a new set of root dictionary libraries with a new StrawArtRecord. That object is different than what is in the release.

The solution drops the pre-built release libraries from the LD_LIBRARY_PATH search path, eliminating the error.

Action item for Adam - for the next release of Art, I need to add logic to drop libraries from a release that you are building yourself.