evpp icon indicating copy to clipboard operation
evpp copied to clipboard

使用glog静态库编译时会coredump

Open ugenehan opened this issue 7 years ago • 4 comments

编译时使用的是glog的静态库,运行example会产生coredump image

ugenehan avatar Nov 20 '18 03:11 ugenehan

拆构函数先后顺序造成的。 不过也有一部分evpp的原因。 class InitializeGlog { public: InitializeGlog(const std::string &Name = std::string("Server"), const std::string &Dir = std::string("./Log/")) { google::InitGoogleLogging(Name.c_str()); google::SetLogDestination(google::GLOG_INFO, Dir.c_str()); google::InstallFailureSignalHandler(); FLAGS_colorlogtostderr = true; FLAGS_stop_logging_if_full_disk = true; FLAGS_v = 3; } ~InitializeGlog() { // 回收所有动态分配的对象 google::ShutdownGoogleLogging(); } };

InitializeGlog Init_Golg; 这里要加一个大括号 { 这边写初始化evpp networkservice 一些东西。 一定要保证先后顺序。 } 祝你好运

OssEase avatar Nov 26 '18 21:11 OssEase

拆构函数先后顺序造成的。 不过也有一部分evpp的原因。 class InitializeGlog { public: InitializeGlog(const std::string &Name = std::string("Server"), const std::string &Dir = std::string("./Log/")) { google::InitGoogleLogging(Name.c_str()); google::SetLogDestination(google::GLOG_INFO, Dir.c_str()); google::InstallFailureSignalHandler(); FLAGS_colorlogtostderr = true; FLAGS_stop_logging_if_full_disk = true; FLAGS_v = 3; } ~InitializeGlog() { // 回收所有动态分配的对象 google::ShutdownGoogleLogging(); } };

InitializeGlog Init_Golg; 这里要加一个大括号 { 这边写初始化evpp networkservice 一些东西。 一定要保证先后顺序。 } 祝你好运

我也遇到了这个问题,但是没有在glog、evpp的源码中找到您这一段

itsniuqiang avatar Mar 14 '19 13:03 itsniuqiang

拆构函数先后顺序造成的。 不过也有一部分evpp的原因。 class InitializeGlog { public: InitializeGlog(const std::string &Name = std::string("Server"), const std::string &Dir = std::string("./Log/")) { google::InitGoogleLogging(Name.c_str()); google::SetLogDestination(google::GLOG_INFO, Dir.c_str()); google::InstallFailureSignalHandler(); FLAGS_colorlogtostderr = true; FLAGS_stop_logging_if_full_disk = true; FLAGS_v = 3; } ~InitializeGlog() { // 回收所有动态分配的对象 google::ShutdownGoogleLogging(); } }; InitializeGlog Init_Golg; 这里要加一个大括号 { 这边写初始化evpp networkservice 一些东西。 一定要保证先后顺序。 } 祝你好运

我也遇到了这个问题,但是没有在glog、evpp的源码中找到您这一段

换个日志库吧。easylogging++

ugenehan avatar Mar 15 '19 02:03 ugenehan

拆构函数先后顺序造成的。 不过也有一部分evpp的原因。 class InitializeGlog { public: InitializeGlog(const std::string &Name = std::string("Server"), const std::string &Dir = std::string("./Log/")) { google::InitGoogleLogging(Name.c_str()); google::SetLogDestination(google::GLOG_INFO, Dir.c_str()); google::InstallFailureSignalHandler(); FLAGS_colorlogtostderr = true; FLAGS_stop_logging_if_full_disk = true; FLAGS_v = 3; } ~InitializeGlog() { // 回收所有动态分配的对象 google::ShutdownGoogleLogging(); } }; InitializeGlog Init_Golg; 这里要加一个大括号 { 这边写初始化evpp networkservice 一些东西。 一定要保证先后顺序。 } 祝你好运

我也遇到了这个问题,但是没有在glog、evpp的源码中找到您这一段

换个日志库吧。easylogging++

这个问题我找到怎么解决了。./evpp/inner_pre.cc中 struct OnStartup { OnStartup() { #ifndef H_OS_WINDOWS if (signal(SIGPIPE, SIG_IGN) == SIG_ERR) { // LOG_ERROR << "SIGPIPE set failed."; fprintf(stderr, "SIGPIPE set failed."); exit(-1); } // LOG_INFO << "ignore SIGPIPE"; fprintf(stderr, "ignore SIGPIPE"); #endif } ~OnStartup() { } } __s_onstartup; 这里使用glog的这两句注释掉或者替换掉。动态链接没有问题而静态链接就有问题,涉及到程序启动时的初始化顺序

itsniuqiang avatar Mar 15 '19 06:03 itsniuqiang