Opened 9 years ago
Closed 8 years ago
#8930 closed Bugs (fixed)
boost::path::root_directory() throws locale::facet::_S_create_c_locale name not valid
Reported by: | Owned by: | Beman Dawes | |
---|---|---|---|
Milestone: | Boost 1.57.0 | Component: | filesystem |
Version: | Boost 1.54.0 | Severity: | Problem |
Keywords: | Cc: |
Description
On Arch Linux with boost 1.54.0, I'm getting locale::facet::_S_create_c_locale name not valid when calling boost::path::root_directory() while LANG is set to a locale which is unlisted in locale -a.
boost_file_system_test.cpp:
#include <boost/filesystem.hpp> int main() { boost::filesystem::path("/abc").root_directory(); }
Compiling, running and backtrace:
$ g++ -std=c++0x -I/usr/include -lboost_filesystem -lboost_system -o boost_filesystem_test boost_file_system_test.cpp $ LANG=foo gdb boost_file_system_test ... terminate called after throwing an instance of 'std::runtime_error' what(): locale::facet::_S_create_c_locale name not valid Program received signal SIGABRT, Aborted. 0xb7fdd424 in __kernel_vsyscall () (gdb) bt #0 0xb7fdd424 in __kernel_vsyscall () #1 0xb7cbf256 in raise () from /usr/lib/libc.so.6 #2 0xb7cc09e3 in abort () from /usr/lib/libc.so.6 #3 0xb7eeb615 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/libstdc++.so.6 #4 0xb7ee9283 in ?? () from /usr/lib/libstdc++.so.6 #5 0xb7ee92bf in std::terminate() () from /usr/lib/libstdc++.so.6 #6 0xb7ee951e in __cxa_throw () from /usr/lib/libstdc++.so.6 #7 0xb7f41842 in std::__throw_runtime_error(char const*) () from /usr/lib/libstdc++.so.6 #8 0xb7f08138 in std::locale::facet::_S_create_c_locale(__locale_struct*&, char const*, __locale_struct*) () from /usr/lib/libstdc++.so.6 #9 0xb7efc759 in std::locale::_Impl::_Impl(char const*, unsigned int) () from /usr/lib/libstdc++.so.6 #10 0xb7efd95a in std::locale::locale(char const*) () from /usr/lib/libstdc++.so.6 #11 0xb7f98e67 in boost::filesystem::path::codecvt() () from /usr/lib/libboost_filesystem.so.1.54.0 #12 0xb7f9ab4d in boost::filesystem::path::root_directory() const () from /usr/lib/libboost_filesystem.so.1.54.0 #13 0x08048ec7 in main ()
Change History (6)
comment:1 by , 9 years ago
Component: | None → filesystem |
---|---|
Owner: | set to |
comment:2 by , 9 years ago
comment:3 by , 8 years ago
Seems to be related to this on FreeBSD with LC_ALL!=C, boost-1_55_0
test.cpp:
#include <boost/filesystem.hpp> int main() { const char *c = "/tmp/file"; boost::filesystem::path path(c,c+4); return 0; }
Backtrace:
#0 0x0000000801073a0c in kill () from /lib/libc.so.7 #1 0x000000080107263b in abort () from /lib/libc.so.7 #2 0x00000008012d0ea4 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libsupc++.so.1 #3 0x00000008012d53a3 in std::set_unexpected () from /usr/lib/libsupc++.so.1 #4 0x00000008012d53e3 in std::terminate () from /usr/lib/libsupc++.so.1 #5 0x00000008012d534a in __cxa_throw () from /usr/lib/libsupc++.so.1 #6 0x00000008008fb8e2 in std::__throw_runtime_error () from /usr/lib/libstdc++.so.6 #7 0x00000008008fa96d in std::locale::facet::_S_create_c_locale () from /usr/lib/libstdc++.so.6 #8 0x0000000800882fdc in std::locale::_Impl::_Impl () from /usr/lib/libstdc++.so.6 #9 0x0000000800884ce9 in std::locale::locale () from /usr/lib/libstdc++.so.6 #10 0x00000000004061cc in boost::filesystem::path::codecvt () at libs/filesystem/src/path.cpp:911 #11 0x0000000000402d3a in boost::filesystem::path::path<char const*> (this=0x7fffffffdb58, begin=0x408d20 "/tmp/file", end=0x408d24 "/file") at path.hpp:167 #12 0x0000000000402bf5 in boost::filesystem::path::path<char const*> (this=0x7fffffffdb58, begin=0x408d20 "/tmp/file", end=0x408d24 "/file") at path.hpp:169 #13 0x0000000000402965 in main () at test.cpp:4
comment:4 by , 8 years ago
Status: | new → assigned |
---|
Just to be sure, does this also fail:
#include <boost/filesystem.hpp>
int main() {
boost::filesystem::path path("/tmp");
return 0;
}
Thanks,
--Beman
comment:6 by , 8 years ago
Milestone: | To Be Determined → Boost 1.57.0 |
---|---|
Resolution: | → fixed |
Status: | assigned → closed |
Fixed for 1.57. Note that the fix was not in 1.57 beta 1, but should be in the final release.
Thanks,
--Beman
Is this related to #8352 Boost-filesystem std::runtime_error: locale::facet::_S_create_c_locale name not valid failure on OpenBSD?