[ndnSIM] Exception while creating face (converting face-uri to canonical form)

Anil Jangam anilj.mailing at gmail.com
Fri Jan 1 14:10:49 PST 2016


Hi Junxiao,

Thanks for comments. There was a small mistake in my code that I was
creating an instance of boost::asio::io_service, which is prohibited
according to: http://ndnsim.net/2.1/guide-to-simulate-real-apps.html

I have corrected this problem and my classes looks like this:

.hpp:
 57 private:
 58   ::ndn::Face m_face;
 59   boost::asio::io_service& m_ioService;
 60   ::ndn::Scheduler m_scheduler;
 61   ::ndn::KeyChain& m_keyChain;
 62
 63   nlsr::Nlsr m_nlsr;

.cpp:
 41 NlsrExec::NlsrExec(::ndn::KeyChain& keyChain, std::string& nlsrConf)
 42   : m_face()
 43   , m_ioService(m_face.getIoService())
 44   , m_scheduler(m_ioService)
 45   , m_keyChain(keyChain)
 46   , m_nlsr(m_ioService, m_scheduler, m_face, m_keyChain)
 47 {
 48   m_nlsr.setConfFileName(nlsrConf);
 49 }
 50

I also modified the face-uri to an IP address:port format. For each node, I
am providing an unique IP. Like this:

 76     face-uri  udp://192.0.2.1:6363
 76     face-uri  udp://192.0.2.1:6363

However, I am still getting the same exception. I have attached the stack
trace of the same. Can you suggest why it might be occurring?

/anil.




On Fri, Jan 1, 2016 at 3:56 AM, Junxiao Shi <shijunxiao at email.arizona.edu>
wrote:

> Hi Anil
>
> FaceUri needs to be in canonical form as shown on
> http://redmine.named-data.net/projects/nfd/wiki/FaceMgmt#FaceUri .
> Otherwise, software may attempt to resolve the hostname with DNS, and that
> would fail unless you have a DNS server within the simulated network.
>
> Yours, Junxiao
> On Jan 1, 2016 02:21, "Anil Jangam" <anilj.mailing at gmail.com> wrote:
>
>> Hi,
>>
>> Perhaps a basic question. But an exception is observed while running
>> ndnSIM scenario. It is trying to convert a *face-uri* to a canonical
>> form. When tested my application in real setup, I used IP addresses instead
>> of a face URI. How does ndnSIM behave in this case? Do we have to use the
>> IP address instead?
>>
>> Below is the exact configuration my application using. There could be
>> error in the configuration as well and looking for suggestions to fix this
>> problem.
>>
>>  71   neighbor
>>  72   {
>>  73     name /ndn/edu/memphis/%C1.Router/cs/castor  ; name prefix of the
>> neighbor router consists
>>  74                                                 ; of network,
>> site-name and router-name
>>  75
>>  76     face-uri  udp://castor.cs.memphis.edu       ; face uri of the
>> face connected to the neighbor
>>  77     link-cost 25                                ; cost of the
>> connecting link to neighbor
>>  78   }
>>  79
>>
>> /anil.
>>
>>
>> _______________________________________________
>> ndnSIM mailing list
>> ndnSIM at lists.cs.ucla.edu
>> http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20160101/645808de/attachment.html>
-------------- next part --------------

9.579s ndn-cxx.Face:expressInterest(): >> Interest: /ndn/NLSR/sync/00
9.579s ndn-cxx.Face:expressInterest(): >> Interest: /ndn/NLSR/sync/00
11s FaceController:createFace(): Converting udp://192.0.2.1:6363 to canonical form

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff52e1c98 in boost::asio::use_service<boost::asio::ip::resolver_service<boost::asio::ip::udp> > (ios=...)
    at /usr/include/boost/asio/impl/io_service.hpp:33
33	  return ios.service_registry_->template use_service<Service>();
(gdb) list
28	{
29	  // Check that Service meets the necessary type requirements.
30	  (void)static_cast<io_service::service*>(static_cast<Service*>(0));
31	  (void)static_cast<const io_service::id*>(&Service::id);
32	
33	  return ios.service_registry_->template use_service<Service>();
34	}
35	
36	template <>
37	inline detail::io_service_impl& use_service<detail::io_service_impl>(
(gdb) where
#0  0x00007ffff52e1c98 in boost::asio::use_service<boost::asio::ip::resolver_service<boost::asio::ip::udp> > (ios=...)
    at /usr/include/boost/asio/impl/io_service.hpp:33
#1  0x00007ffff52e0a17 in boost::asio::basic_io_object<boost::asio::ip::resolver_service<boost::asio::ip::udp>, false>::basic_io_object (this=0x8c1ef8, io_service=...) at /usr/include/boost/asio/basic_io_object.hpp:90
#2  0x00007ffff52dfc8f in boost::asio::ip::basic_resolver<boost::asio::ip::udp, boost::asio::ip::resolver_service<boost::asio::ip::udp> >::basic_resolver (this=0x8c1ef8, io_service=...) at /usr/include/boost/asio/ip/basic_resolver.hpp:68
#3  0x00007ffff52df170 in ndn::dns::Resolver::Resolver(std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, boost::asio::io_service&) (this=0x8c1ef8, onSuccess=..., onError=..., addressSelector=..., ioService=...)
    at ../src/ndnSIM/ndn-cxx/src/util/dns.cpp:43
#4  0x00007ffff52e5644 in __gnu_cxx::new_allocator<ndn::dns::Resolver>::construct<ndn::dns::Resolver<std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> > > (this=0x7fffffffbb1f, __p=0x8c1ef8)
    at /usr/include/c++/4.8/ext/new_allocator.h:120
#5  0x00007ffff52e549c in std::allocator_traits<std::allocator<ndn::dns::Resolver> >::_S_construct<ndn::dns::Resolver<std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> > >(std::allocator<ndn::dns::Resolver>&, std::allocator_traits<std::allocator<ndn::dns::Resolver> >::__construct_helper*, (ndn::dns::Resolver<std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >&&)...) (__a=..., __p=0x8c1ef8)
    at /usr/include/c++/4.8/bits/alloc_traits.h:254
#6  0x00007ffff52e5160 in std::allocator_traits<std::allocator<ndn::dns::Resolver> >::construct<ndn::dns::Resolver<std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> > >(std::allocator<ndn::dns::Resolver>&, ndn::dns::Resolver<std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >*, (ndn::dns::Resolver<std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >&&)...) (
    __a=..., __p=0x8c1ef8) at /usr/include/c++/4.8/bits/alloc_traits.h:393
#7  0x00007ffff52e4ca4 in std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >(std::allocator<ndn::dns::Resolver>, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service>&&) (this=0x8c1ee0, __a=...) at /usr/include/c++/4.8/bits/shared_ptr_base.h:399
#8  0x00007ffff52e491e in __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2> >::construct<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2><std::allocator<ndn::dns::Resolver> const, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> > > (this=0x7fffffffbc87, __p=0x8c1ee0)
    at /usr/include/c++/4.8/ext/new_allocator.h:120
---Type <return> to continue, or q <return> to quit---
#9  0x00007ffff52e454a in std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2> > >::_S_construct<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2><std::allocator<ndn::dns::Resolver> const, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> > >(std::allocator<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2> >&, std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2> > >::__construct_helper*, (std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2><std::allocator<ndn::dns::Resolver> const, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >&&)...) (__a=..., __p=0x8c1ee0) at /usr/include/c++/4.8/bits/alloc_traits.h:254
#10 0x00007ffff52e3f7a in std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2> > >::construct<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2><std::allocator<ndn::dns::Resolver> const, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> > >(std::allocator<std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2> >&, std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2><std::allocator<ndn::dns::Resolver> const, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >*, (std::_Sp_counted_ptr_inplace<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, (__gnu_cxx::_Lock_policy)2><std::allocator<ndn::dns::Resolver> const, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >&&)...) (__a=..., __p=0x8c1ee0)
    at /usr/include/c++/4.8/bits/alloc_traits.h:393
#11 0x00007ffff52e37da in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >(std::_Sp_make_shared_tag, ndn::dns::Resolver*, std::allocator<ndn::dns::Resolver> const&, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service>&&) (this=0x7fffffffbee8, __a=...)
    at /usr/include/c++/4.8/bits/shared_ptr_base.h:502
#12 0x00007ffff52e2d57 in std::__shared_ptr<ndn::dns::Resolver, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<ndn::dns::Resolver>, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >(std::_Sp_make_shared_tag, std::allocator<ndn::dns::Resolver> const&, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service>&&) (this=0x7fffffffbee0, __tag=..., __a=...)
    at /usr/include/c++/4.8/bits/shared_ptr_base.h:957
#13 0x00007ffff52e24f8 in std::shared_ptr<ndn::dns::Resolver>::shared_ptr<std::allocator<ndn::dns::Resolver>, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >(std::_Sp_make_shared_tag, std::allocator<n---Type <return> to continue, or q <return> to quit---
dn::dns::Resolver> const&, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service>&&) (this=0x7fffffffbee0, __tag=..., __a=...) at /usr/include/c++/4.8/bits/shared_ptr.h:316
#14 0x00007ffff52e1868 in std::allocate_shared<ndn::dns::Resolver, std::allocator<ndn::dns::Resolver>, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >(std::allocator<ndn::dns::Resolver> const&, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service>&&) (__a=...)
    at /usr/include/c++/4.8/bits/shared_ptr.h:598
#15 0x00007ffff52e086d in std::make_shared<ndn::dns::Resolver, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service> >(std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, std::function<bool (boost::asio::ip::address const&)> const&, std::reference_wrapper<boost::asio::io_service>&&) () at /usr/include/c++/4.8/bits/shared_ptr.h:614
#16 0x00007ffff52de5bd in ndn::dns::asyncResolve(std::string const&, std::function<void (boost::asio::ip::address const&)> const&, std::function<void (std::string const&)> const&, boost::asio::io_service&, std::function<bool (boost::asio::ip::address const&)> const&, boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > const&) (host=..., onSuccess=..., 
    onError=..., ioService=..., addressSelector=..., timeout=...) at ../src/ndnSIM/ndn-cxx/src/util/dns.cpp:131
#17 0x00007ffff52f009e in ndn::util::IpHostCanonizeProvider<boost::asio::ip::udp>::canonize(ndn::util::FaceUri const&, std::function<void (ndn::util::FaceUri const&)> const&, std::function<void (std::string const&)> const&, boost::asio::io_service&, boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > const&) const (this=0x9ff948, faceUri=..., onSuccess=..., 
    onFailure=..., io=..., timeout=...) at ../src/ndnSIM/ndn-cxx/src/util/face-uri.cpp:296

#18 0x00007ffff52e81b8 in ndn::util::FaceUri::canonize(std::function<void (ndn::util::FaceUri const&)> const&, std::function<void (std::string const&)> const&, boost::asio::io_service&, boost::chrono::duration<long, boost::ratio<1l, 1000000000l> > const&) const (this=0x7fffffffc1e0, onSuccess=..., onFailure=..., io=..., timeout=...)
    at ../src/ndnSIM/ndn-cxx/src/util/face-uri.cpp:541
#19 0x00007ffff54dd0c6 in nlsr::util::FaceController::createFace(std::string const&, std::function<void (ndn::nfd::ControlParameters const&)> const&, std::function<void (unsigned int, std::string const&)> const&) (this=0x7dcbb8, request=..., 
    onSuccess=..., onFailure=...) at ../src/ndnSIM/NLSR/src/utility/face-controller.cpp:50
#20 0x00007ffff54ae5dc in nlsr::Fib::createFace(std::string const&, std::function<void (ndn::nfd::ControlParameters const&)> const&, std::function<void (unsigned int, std::string const&)> const&) (this=0x7dcb88, faceUri=..., onSuccess=..., 
    onFailure=...) at ../src/ndnSIM/NLSR/src/route/fib.cpp:302
#21 0x00007ffff54aeef3 in nlsr::Fib::registerPrefix(ndn::Name const&, std::string const&, unsigned long, boost::chrono::duration<long, boost::ratio<1l, 1000l> > const&, unsigned long, unsigned char, std::function<void (ndn::nfd::ControlParameters const&)> const&, std::function<void (unsigned int, std::string const&)> const&) (this=0x7dcb88, namePrefix=..., faceUri=..., 
    faceCost=25, timeout=..., flags=2, times=0 '\000', onSuccess=..., onFailure=...)
    at ../src/ndnSIM/NLSR/src/route/fib.cpp:379
#22 0x00007ffff54712d2 in nlsr::HelloProtocol::registerPrefixes (this=0x7dcd10, adjName=..., faceUri=..., linkCost=25, 
    timeout=...) at ../src/ndnSIM/NLSR/src/hello-protocol.cpp:218
#23 0x00007ffff546e6bd in nlsr::HelloProtocol::sendScheduledInterest (this=0x7dcd10, seconds=10)
    at ../src/ndnSIM/NLSR/src/hello-protocol.cpp:72
---Type <return> to continue, or q <return> to quit---
#24 0x00007ffff5476aec in std::_Mem_fn<void (nlsr::HelloProtocol::*)(unsigned int)>::operator()<unsigned int&, void> (
    this=0x842770, __object=0x7dcd10) at /usr/include/c++/4.8/functional:601
#25 0x00007ffff54763cb in std::_Bind<std::_Mem_fn<void (nlsr::HelloProtocol::*)(unsigned int)> (nlsr::HelloProtocol*, unsigned int)>::__call<void, , 0ul, 1ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul>) (this=0x842770, 
    __args=<unknown type in /home/anilj1/sandbox/ndnSIM/ns-3/build/libns3-dev-ndnSIM-debug.so, CU 0x3901648, DIE 0x3993c4f>)
    at /usr/include/c++/4.8/functional:1296
#26 0x00007ffff547567e in std::_Bind<std::_Mem_fn<void (nlsr::HelloProtocol::*)(unsigned int)> (nlsr::HelloProtocol*, unsigned int)>::operator()<, void>() (this=0x842770) at /usr/include/c++/4.8/functional:1355
#27 0x00007ffff54744e7 in std::_Function_handler<void (), std::_Bind<std::_Mem_fn<void (nlsr::HelloProtocol::*)(unsigned int)> (nlsr::HelloProtocol*, unsigned int)> >::_M_invoke(std::_Any_data const&) (__functor=...)
    at /usr/include/c++/4.8/functional:2071
#28 0x00007ffff51bed8e in std::function<void ()>::operator()() const (this=0x83edc0) at /usr/include/c++/4.8/functional:2471
#29 0x00007ffff530f217 in ns3::EventImpl* ns3::MakeEvent<void (std::function<void ()>::*)() const, std::function<void ()> >(void (std::function<void ()>::*)() const, std::function<void ()>)::EventMemberImpl0::Notify() (this=0x83edb0)
    at ./ns3/make-event.h:323
#30 0x00007fffedfba861 in ns3::EventImpl::Invoke (this=0x83edb0) at ../src/core/model/event-impl.cc:51
#31 0x00007fffedfbf228 in ns3::DefaultSimulatorImpl::ProcessOneEvent (this=0x752930)
    at ../src/core/model/default-simulator-impl.cc:149
#32 0x00007fffedfbf5a2 in ns3::DefaultSimulatorImpl::Run (this=0x752930) at ../src/core/model/default-simulator-impl.cc:202
#33 0x00007fffedfbb598 in ns3::Simulator::Run () at ../src/core/model/simulator.cc:204
#34 0x000000000041dbf1 in ns3::main (argc=1, argv=0x7fffffffd2c8) at ../src/ndnSIM/examples/ndn-nlsr-simple.cpp:95
#35 0x000000000041de40 in main (argc=1, argv=0x7fffffffd2c8) at ../src/ndnSIM/examples/ndn-nlsr-simple.cpp:106
(gdb) q
A debugging session is active.

	Inferior 1 [process 31734] will be killed.

Quit anyway? (y or n) y
anilj1 at insp-5521:~/sandbox/ndnSIM/ns-3$ 


More information about the ndnSIM mailing list