-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Segfault in brain::neuron::Soma::getProfilePoints #308
Comments
For 1. Brion tries first to find H5 morphologies, if it fails, it will proceed with SWC: URI getMorphologyURI(const std::string& name) const
{
if (boost::filesystem::path(name).is_absolute())
return URI(name);
URI uri(getMorphologySource());
const auto h5 = uri.getPath() + "/" + name + ".h5";
if (!fs::exists(fs::path(h5)))
{
const auto swc = uri.getPath() + "/" + name + ".swc";
if (fs::exists(fs::path(swc)))
{
uri.setPath(swc);
return uri;
}
}
uri.setPath(h5);
return uri;
} For 2., I see that the circuit defines the node ids starting at 0: nroman@bbpv1:~$ h5dump -d /nodes/hippocampus_neurons/node_type_id /gpfs/bbp.cscs.ch/project/proj42/circuits/CA1.O1/mooc-circuit/sonata/nodes/nodes.h5
HDF5 "/gpfs/bbp.cscs.ch/project/proj42/circuits/CA1.O1/mooc-circuit/sonata/nodes/nodes.h5" {
DATASET "/nodes/hippocampus_neurons/node_type_id" {
DATATYPE H5T_STD_I64LE
DATASPACE SIMPLE { ( 18198 ) / ( 18198 ) }
DATA {
(0): -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
(17): -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
(34): -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
(51): -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
(68): -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
Which is consistent with what can be found in the report: nroman@bbpv1:~$ h5dump -d /report/hippocampus_neurons/mapping/node_ids /gpfs/bbp.cscs.ch/project/proj112/simulations/CA1.O1.mooc-circuit/LFP/full_dt05//AllCompartmentsIMembrane.h5 > report.txt
nroman@bbpv1:~$ cat report.txt | grep " 0,"
(654): 17205, 17242, 17297, 17339, 17344, 0, 932, 960, 1896, 2323, 3122, However, Brion get the circuit GIDs increasing by 1 their index in the circuit, to make them always start at 1 (I thought myself aswell that GIDs started at 1 and not at 0): GIDSet getGIDs() const
{
brain::GIDSet gids;
brain::GIDSet::const_iterator hint = gids.begin();
for (uint32_t i = 0; i < getNumNeurons(); ++i)
hint = gids.insert(hint, i + 1);
return gids;
} As for the SEGFault, I have sucessfully loaded the circuit |
Thanks for looking, so 1 & 2 are red-herrings.
Ok, that's good to know - narrows the problem down a lot. Have you guys had to make many changes to the apps that use Brion to load? Does the above problem strike you as something you've seen before? emSim as originally done by the viz team, so I don't know the code very well. |
It's the first time I see this kind of error. My guess is that, because GIDs start at 0, but Brion load them starting at 1, it might be trying to load an unexisting morphology. We ask MVDTool for the morphology name of a given GID set to build the path to their morphology files. It might be asking MVDTool for a GID that does not exists, 18198, returning an empty Morphology name. This would cause the underlying object used by neuron::Morphology to be null, because it could not be loaded, and would explain the place where the segmentation fault is happening (which is exactly when this underlying object is called) |
The suspicious call site is here https://github.com/BlueBrain/EMSim/blob/master/emSim/EventsLoader.cpp#L81:
gidsPerBatch contains And the dereference of Is there a way that the return value of |
The value of The loading/call trace: brain::neuron::Morphology
-> brain::neuron::Morphology::Impl
-> brion::Morphology
-> brion::Morphology::Impl
-> brion::plugin::MorphologyMORPHIO |
Backtrace is:
This is with the MOOC circuit (proj112/simulations/CA1.O1.mooc-circuit/LFP/full_dt05//BlueConfig); a couple things that may help with debug:
MorphologyType swc
), however, I see it try and access the h5 morphs first:So I'm wondering if it's a mismatch in GIDs; it appears that the following SONATA files are being loaded:
Any ideas?
The text was updated successfully, but these errors were encountered: