Project

General

Profile

Bug #3779

Assertion fail adding a handler for CatalogInterface

Added by Marc Mengel about 7 years ago. Updated about 7 years ago.

Status:
Closed
Priority:
Normal
Category:
User Code
Target version:
Start date:
04/29/2013
Due date:
% Done:

100%

Estimated time:
Occurs In:
Scope:
Internal
Experiment:
-
SSI Package:
Duration:

Description

Getting:

nova: /archives/fwdev/externals/art_suite/v1_06_00/source/art/art/Framework/Services/Registry/ServicesManager.cc:99: void art::ServicesManager::fillCache_(const ParameterSets&, const art::LibraryManager&): Assertion `!service_helper->is_interface() && "Registered service is not a service implementation!"' failed.

Stack trace from GDB:
(gdb) where
#0  0x0000003907030285 in raise () from /lib64/libc.so.6
#1  0x0000003907031d30 in abort () from /lib64/libc.so.6
#2  0x0000003907029706 in __assert_fail () from /lib64/libc.so.6
#3  0x00002b5f9defcf35 in art::ServicesManager::fillCache_ (this=0x1ac99120, 
    psets=@0x7fff4bc05090, lm=@0x1ac8dfc8)
    at /archives/fwdev/externals/art_suite/v1_06_00/source/art/art/Framework/Services/Registry/ServicesManager.cc:98
#4  0x00002b5f9defc7f3 in art::ServicesManager::ServicesManager (this=0x1ac99120, 
    psets=@0x7fff4bc05090, lm=@0x1ac8dfc8, reg=@0x1ac89f10)
    at /archives/fwdev/externals/art_suite/v1_06_00/source/art/art/Framework/Services/Registry/ServicesManager.cc:27
#5  0x00002b5f9defadaa in art::ServiceRegistry::createSet (iPS=@0x7fff4bc05090, reg=@0x1ac89f10)
    at /archives/fwdev/externals/art_suite/v1_06_00/source/art/art/Framework/Services/Registry/ServiceRegistry.cc:49
#6  0x00002b5f9c0610fc in art::EventProcessor::configureServices_ (this=0x1ac89cb0, 
    pset=@0x7fff4bc06070)
    at /archives/fwdev/externals/art_suite/v1_06_00/source/art/art/Framework/Core/EventProcessor.cc:312
#7  0x00002b5f9c05fc94 in art::EventProcessor::EventProcessor (this=0x1ac89cb0, 
    pset=@0x7fff4bc06070)
    at /archives/fwdev/externals/art_suite/v1_06_00/source/art/art/Framework/Core/EventProcessor.cc:208
#8  0x00002b5f9649bf66 in art::run_art_common_ (main_pset=
---Type <return> to continue, or q <return> to quit---
          {mapping_ = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::any> > >> = {<__gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::any> > >> = {<No data fields>}, <No data fields>}, _M_key_compare = {<std::binary_function<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool>> = {<No data fields>}, <No data fields>}, _M_header = {_M_color = std::_S_red, _M_parent = 0x19dd7660, _M_left = 0x19de7cb0, _M_right = 0x19dd5ac0}, _M_node_count = 7}}}, id_ = {valid_ = false, id_ = {elems = '\0' <repeats 19 times>}}})
    at /archives/fwdev/externals/art_suite/v1_06_00/source/art/art/Framework/Art/run_art.cc:275
#9  0x00002b5f9649b126 in art::run_art (argc=3, argv=0x7fff4bc063a8, in_desc=@0x7fff4bc06190, 
    lookupPolicy=@0x7fff4bc06140, handlers=@0x7fff4bc06200)
    at /archives/fwdev/externals/art_suite/v1_06_00/source/art/art/Framework/Art/run_art.cc:165
#10 0x00002b5f96498194 in artapp (argc=3, argv=0x7fff4bc063a8)
    at /archives/fwdev/externals/art_suite/v1_06_00/build-Linux64bit+2.6-2.5/art-nu-e2-debug/art/Framework/Art/artapp.cc:47
#11 0x0000000000401380 in main (argc=3, argv=0x7fff4bc063a8)
    at /archives/fwdev/externals/art_suite/v1_06_00/build-Linux64bit+2.6-2.5/art-nu-e2-debug/art/Framework/Art/nova.cc:6


Not sure if it is my IFCatlogInterface or my IFFileTransferService that is causing
the assertion failure.

The servcies are declared with:

DECLARE_ART_SERVICE_INTERFACE_IMPL(ifdh_ns::IFCatalogInterface, art::CatalogInterface, LEGACY)
DECLARE_ART_SERVICE_INTERFACE_IMPL(ifdh_ns::IFFileTransfer, art::FileTransfer, LEGACY)

respectively, and the implementation files have:

DEFINE_ART_SERVICE_INTERFACE_IMPL(ifdh_ns::IFCatalogInterface, art::CatalogInterface)
DEFINE_ART_SERVICE_INTERFACE_IMPL(ifdh_ns::IFFileTransfer, art::FileTransfer)

respectively. The code is otherwise identical to what was working in 1.02; modulo
a few _attribute((unused)) tags on parameters.

Code in question is at:
https://cdcvs.fnal.gov/redmine/projects/ifdh-art/repository/revisions/master/show/src/IFCatalogInterface
and
https://cdcvs.fnal.gov/redmine/projects/ifdh-art/repository/revisions/master/show/src/IFFileTransfer

foo.fcl (2.54 KB) foo.fcl .fcl file being used Marc Mengel, 04/29/2013 01:09 PM

Associated revisions

Revision dfb0e89d (diff)
Added by Christopher Green about 7 years ago

Better error handling for circumstances like issue #3779.

History

#1 Updated by Christopher Green about 7 years ago

  • Category set to User Code
  • Status changed from New to Resolved
  • Assignee set to Christopher Green
  • Target version set to 1.07.00
  • % Done changed from 0 to 100

This was determined to be pilot error (misuse of DECLARE_ART_SERVICE_INTERFACE instead of DECLARE_ART_SERVICE). With dfb0e89d9ddbe33a56ff89da84f607065f49f6e6, error handling has been made more informative.

#2 Updated by Christopher Green about 7 years ago

  • Status changed from Resolved to Closed


Also available in: Atom PDF