Hi, I have one amd64 machine now on post clang, now running sysutils/facter with: facter -p
to also evaluate the puppet facts, it bails out on me as like: 2017-08-01 23:56:58.825508 WARN puppetlabs.facter - Could not initialize locale, even with LC_* variables cleared. Continuing without localization support 2017-08-01 23:57:03.604949 FATAL puppetlabs.facter - unhandled exception: ctype_byname<char>::ctype_byname failed to construct for C With my minimal C++ knowledge, I found "catch throw" in gdb, and figured that the 'C' comes from the name of the locale, so I set environment and ran it like with: 2017-08-01 23:56:58.825508 WARN puppetlabs.facter - Could not initialize locale, even with LC_* variables cleared. Continuing without localization support 2017-08-01 23:57:03.604949 FATAL puppetlabs.facter - unhandled exception: boost::too_many_args: format-string referred to less arguments than were passed However, 'catch throw' does seem to end up always at the same spot in the program, so I see where the unhandled exception is not handled, but where is it actually caused? With my little C++ knowledge, I don't seem to see it: LANG=C LC_ALL=C egdb /usr/local/bin/facter GNU gdb (GDB) 7.12.1 Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-unknown-openbsd6.1". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from /usr/local/bin/facter...done. (gdb) catch throw Catchpoint 1 (throw) (gdb) r -p Starting program: /usr/local/bin/facter -p Catchpoint 1 (exception thrown), __cxa_throw (thrown_object=0x17eb74b24a80, tinfo=0x17eba8d5cc80 <typeinfo for std::runtime_error>, dest=0x17eba8b0f790 <std::runtime_error::~runtime_error()>) at /usr/src/lib/libcxxabi/src/cxa_exception.cpp:223 223 __cxa_eh_globals *globals = __cxa_get_globals(); (gdb) bt #0 __cxa_throw (thrown_object=0x17eb74b24a80, tinfo=0x17eba8d5cc80 <typeinfo for std::runtime_error>, dest=0x17eba8b0f790 <std::runtime_error::~runtime_error()>) at /usr/src/lib/libcxxabi/src/cxa_exception.cpp:223 #1 0x000017eb7705728c in std::__1::collate_byname<char>::collate_byname (this=0x17ebd07b1b60, name=..., refs=<optimized out>) at /usr/src/lib/libcxx/src/locale.cpp:662 #2 0x000017eb77053643 in std::__1::locale::__imp::__imp (this=0x17ec13f9b200, name=..., refs=<optimized out>) at /usr/src/lib/libcxx/src/locale.cpp:210 #3 0x000017eb77056844 in std::__1::locale::locale (this=0x7f7ffffd2900, name=0x7f7ffffd2a21 "C") at /usr/src/lib/libcxx/src/locale.cpp:509 #4 0x000017eb41e9d09a in boost::locale::impl_std::std_localization_backend::loadable (this=0x17eb58725500, name=...) at libs/locale/src/std/std_backend.cpp:152 #5 0x000017eb41e9c457 in boost::locale::impl_std::std_localization_backend::prepare_data (this=0x17eb58725500) at libs/locale/src/std/std_backend.cpp:98 #6 0x000017eb41e9ace8 in boost::locale::impl_std::std_localization_backend::install (this=0x17eb58725500, base=..., category=1, type=1) at libs/locale/src/std/std_backend.cpp:164 #7 0x000017eb41e0f2e1 in boost::locale::localization_backend_manager::impl::actual_backend::install (this=0x17eb311d2c00, l=..., category=1, type=1) at libs/locale/src/shared/localization_backend.cpp:145 #8 0x000017eb41dfdeec in boost::locale::generator::generate (this=0x7f7ffffd3bd8, base=..., id=...) at libs/locale/src/shared/generator.cpp:141 #9 0x000017eb41dfd5fb in boost::locale::generator::generate (this=0x7f7ffffd3bd8, id=...) at libs/locale/src/shared/generator.cpp:116 #10 0x000017eb93708624 in boost::locale::generator::operator() (this=0x7f7ffffd3bd8, id=...) at /usr/local/include/boost/locale/generator.hpp:202 #11 0x000017eb9370704c in leatherman::locale::get_locale (id=..., domain=..., paths=...) at /home/ports/pobj/amd64/leatherman-1.0.0/leatherman-1.0.0/locale/src/locale.cc:48 #12 0x000017ebc99ef748 in setup_logging_internal (os=..., use_locale=true) at /home/ports/pobj/amd64/facter-3.7.0/facter-3.7.0/lib/src/logging/logging.cc:20 #13 0x000017ebc99eea0e in facter::logging::setup_logging (os=...) at /home/ports/pobj/amd64/facter-3.7.0/facter-3.7.0/lib/src/logging/logging.cc:64 #14 0x000017e915502b98 in main (argc=2, argv=0x7f7ffffd93e8) at /home/ports/pobj/amd64/facter-3.7.0/facter-3.7.0/exe/facter.cc:136 If someone has a cluebat or can point me into the right direction, I'm all ears. The only thing I can see, that leatherman, as well as boost is involved, and that all circles around LOCALE settings. So, when building facter, telling it that leatherman doesn't support locale, fixes the problem, but I don't think that this is a proper solution. So if someone has a pointer to the above, let me know. Sebastian Index: Makefile =================================================================== RCS file: /cvs/ports/sysutils/facter/Makefile,v retrieving revision 1.46 diff -u -p -u -r1.46 Makefile --- Makefile 26 Jul 2017 22:45:30 -0000 1.46 +++ Makefile 1 Aug 2017 22:22:42 -0000 @@ -8,7 +8,7 @@ DISTNAME = facter-${VERSION} SHARED_LIBS += facter 3.1 # 3.2 PKGSPEC = facter->=3.0,<4.0 CATEGORIES = sysutils -REVISION = 0 +REVISION = 1 MAINTAINER = Sebastian Reitenbach <[email protected]> @@ -40,6 +40,7 @@ LIB_DEPENDS = devel/boost>=1.58 \ BUILD_DEPENDS = devel/gettext-tools CONFIGURE_ARGS+= -DFACTER_RUBY="${LOCALBASE}/lib/libruby${MODRUBY_BINREV}.so" \ + -DLEATHERMAN_USE_LOCALES:Bool=No \ -DRUBY_LIB_INSTALL="${PREFIX}/lib/ruby/vendor_ruby/${MODRUBY_REV}" \ -DWITHOUT_JRUBY:Bool=Yes
