c ++ - 退出时发生SIGSEGV

时间:2018-03-21 13:37:51

标签: c++ server gdb sigsegv gsoap

我正在使用Eclipse和Multi process GDB调试服务器。我使用了带有SSL和WS-Security的gSOAP 2.8。代码基本上是这样的:

int main (void)
{
    ServerClass Server;
    ...
    //Configuration of server, SSL and WS-Security
    ...
    if( !Server.valid_socket(Server.bind() ) )
        return EXIT_FAILURE;
    while(1)
    {
        if( Server.valid_socket(Server.accept() ) )
        {
            pid_t pid = fork();
            if(!pid)   //Child process
            {
                ...
                Server.serve(); //serves the client
                ...
                Server.destroy(); //ends gsoap connection
                return EXIT_SUCCESS;
            }
            else
            {
                Server.close_socket();
            }
        }
        else
            cout << "Socket invalid" << endl;
    }
    ...
}

ServerClass是一个包含服务器和成员配置方法的类。服务器成功处理客户端请求,返回EXIT_SUCCESS但退出时失败。调试器显示此跟踪:

Thread[2] 3540 (Suspended : Signal : SIGSEGV: Segmentation Fault)
 - std::ostream::flush() at 0xb7b9c0
 - std::ios_base::Init::~Init() at 0xb7b5d81c   
 - 0xb7918121   
 - exit() at 0xb791817d 
 - __libc_start_main() at 0xb78fea8b    
 - _start() at 0x8143110    

可能是什么问题?感谢。

编辑:我替换了

return EXIT_SUCCESS;

exit(EXIT_SUCCESS);

现在代码工作正常,但我不知道为什么失败了。有什么建议?

0 个答案:

没有答案