bsd4me
Well-Known Member
Hallo,
ich möchte die Software REPET (https://urgi.versailles.inra.fr/Tools/REPET) auf einem FreeBSD Server laufen lassen. Es scheint alles zu klappen, bis auf das Executable grouper. Dafür habe ich sogar den Quellcode bekommen, da die Binaries nur für Linux geschrieben wurden und neu compiliert. Hier ist die Fehlersituation:
[user@server] > lldb40 $REPET_PATH/bin/grouper -c grouperThreads2.26.core
(lldb) target create "/bioappl/src/REPET/REPET_linux-x64-2.5/bin/grouper" --core "grouperThreads2.26.core"
Core file '/home/user/work/DmelChr4_TEannot/DmelChr4_Blaster_Grouper/grouperThreads2.26.core' (x86_64) was loaded.
(lldb) bt
* thread #1, name = 'grouperThreads2.26', stop reason = signal SIGSEGV
* frame #0: 0x00000000004bde75 grouper`Range::Range(Range const&) + 37
frame #1: 0x00000000004be1ba grouper`RangeAlign::RangeAlign(RangeAlign const&) + 42
frame #2: 0x0000000000457240 grouper`RangePair::RangePair(RangePair const&) + 48
frame #3: 0x0000000000456dd0 grouper`std::__1::list<RangePair, std::__1::allocator<RangePair> >:
ush_back(RangePair const&) + 768
frame #4: 0x0000000000456a5d grouper`std::__1::list<RangePair, std::__1::allocator<RangePair> >::list(std::__1::list<RangePair, std::__1::allocator<RangePair> > const&) + 781
frame #5: 0x0000000000456723 grouper`RangePairSet::RangePairSet(RangePairSet const&) + 67
frame #6: 0x0000000000456060 grouper`std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> >:
ush_back(RangePairSet const&) + 768
frame #7: 0x0000000000455ced grouper`std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> >::list(std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> > const&) + 781
frame #8: 0x0000000000452560 grouper`std::__1::list<std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> >, std::__1::allocator<std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> > > >:
ush_back(std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> > const&) + 768
frame #9: 0x000000000044fa51 grouper`splitInputData(std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> >&, int) + 2561
frame #10: 0x0000000000450464 grouper`main + 1652
frame #11: 0x0000000000404a6f grouper`_start + 367
was dem Quellecode
std::list< std::list<RangePairSet> > splitInputData(std::list<RangePairSet>& rp_list, int nb_split)
{
std::list< std::list<RangePairSet> > lrpl;
rp_list.sort( RangePair::greaterLengthIdent );
int size=rp_list.size();
int chunk=floor(size/nb_split);
std::cout<<"chunks="<<chunk<<" from "<<size<<" matches"<<std::endl;
std::list<RangePairSet>::iterator rp_list_it=rp_list.begin();
for(int i=0; i<nb_split; i++)
{
std::list<RangePairSet> rpl;
for(int j=0; j<chunk && rp_list_it!=rp_list.end(); j++) rp_list_it++; // move iterator from several position
if(rp_list_it!=rp_list.end())
rpl.splice(rpl.begin(), rp_list, rp_list.begin(), rp_list_it);
else
rpl.splice(rpl.begin(), rp_list, rp_list.begin());
lrpl.push_back(rpl);
}
lrpl.back().splice(lrpl.back().begin(),rp_list);
return lrpl;
}
entspricht. die dick markierte Zeile produziert den Fehler... Hat evtl. jeamnd eine Idee warum?
Vielen Dank und viele Grüße, Norbert
ich möchte die Software REPET (https://urgi.versailles.inra.fr/Tools/REPET) auf einem FreeBSD Server laufen lassen. Es scheint alles zu klappen, bis auf das Executable grouper. Dafür habe ich sogar den Quellcode bekommen, da die Binaries nur für Linux geschrieben wurden und neu compiliert. Hier ist die Fehlersituation:
[user@server] > lldb40 $REPET_PATH/bin/grouper -c grouperThreads2.26.core
(lldb) target create "/bioappl/src/REPET/REPET_linux-x64-2.5/bin/grouper" --core "grouperThreads2.26.core"
Core file '/home/user/work/DmelChr4_TEannot/DmelChr4_Blaster_Grouper/grouperThreads2.26.core' (x86_64) was loaded.
(lldb) bt
* thread #1, name = 'grouperThreads2.26', stop reason = signal SIGSEGV
* frame #0: 0x00000000004bde75 grouper`Range::Range(Range const&) + 37
frame #1: 0x00000000004be1ba grouper`RangeAlign::RangeAlign(RangeAlign const&) + 42
frame #2: 0x0000000000457240 grouper`RangePair::RangePair(RangePair const&) + 48
frame #3: 0x0000000000456dd0 grouper`std::__1::list<RangePair, std::__1::allocator<RangePair> >:

frame #4: 0x0000000000456a5d grouper`std::__1::list<RangePair, std::__1::allocator<RangePair> >::list(std::__1::list<RangePair, std::__1::allocator<RangePair> > const&) + 781
frame #5: 0x0000000000456723 grouper`RangePairSet::RangePairSet(RangePairSet const&) + 67
frame #6: 0x0000000000456060 grouper`std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> >:

frame #7: 0x0000000000455ced grouper`std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> >::list(std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> > const&) + 781
frame #8: 0x0000000000452560 grouper`std::__1::list<std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> >, std::__1::allocator<std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> > > >:

frame #9: 0x000000000044fa51 grouper`splitInputData(std::__1::list<RangePairSet, std::__1::allocator<RangePairSet> >&, int) + 2561
frame #10: 0x0000000000450464 grouper`main + 1652
frame #11: 0x0000000000404a6f grouper`_start + 367
was dem Quellecode
std::list< std::list<RangePairSet> > splitInputData(std::list<RangePairSet>& rp_list, int nb_split)
{
std::list< std::list<RangePairSet> > lrpl;
rp_list.sort( RangePair::greaterLengthIdent );
int size=rp_list.size();
int chunk=floor(size/nb_split);
std::cout<<"chunks="<<chunk<<" from "<<size<<" matches"<<std::endl;
std::list<RangePairSet>::iterator rp_list_it=rp_list.begin();
for(int i=0; i<nb_split; i++)
{
std::list<RangePairSet> rpl;
for(int j=0; j<chunk && rp_list_it!=rp_list.end(); j++) rp_list_it++; // move iterator from several position
if(rp_list_it!=rp_list.end())
rpl.splice(rpl.begin(), rp_list, rp_list.begin(), rp_list_it);
else
rpl.splice(rpl.begin(), rp_list, rp_list.begin());
lrpl.push_back(rpl);
}
lrpl.back().splice(lrpl.back().begin(),rp_list);
return lrpl;
}
entspricht. die dick markierte Zeile produziert den Fehler... Hat evtl. jeamnd eine Idee warum?
Vielen Dank und viele Grüße, Norbert