ZLToolKit icon indicating copy to clipboard operation
ZLToolKit copied to clipboard

Hello, I have a question. After creating a socket using `createsocket`, do I need to release it when closing the program?

Open downloadproject opened this issue 3 years ago • 8 comments

    QWeakPointer<MainWindow> weakSelf = QWeakPointer<MainWindow>(sharedFromThis());
    sockRecv  = Socket::createSocket();//Create a UDP data receiving port
    sockSend  = Socket::createSocket();//Create a UDP data sending port

    sockRecv->bindUdpSock(9001);//Bind UDP to port 9001 for receiving
    sockSend->bindUdpSock(0, "0.0.0.0");//Bind UDP to a random port for sending

    sockRecv->setOnRead([weakSelf](const Buffer::Ptr &buf, struct sockaddr *addr , int){
            //Callback when data is received
           // DebugL << "recv data form " << getIP(addr) << ":" << buf->data();
        auto strongSelf = weakSelf.lock();
        if(!strongSelf) {
            return ;
        }
        strongSelf->handleOneRtp((uint8_t *) buf->data(), buf->size());
    });


I created it, and when I close the program, I get the following error:
the inferior stopped because it received a signal from operating system

Signal name :SIGSEGV

QWeakPointer<MainWindow> weakSelf = QWeakPointer<MainWindow>(sharedFromThis()); sockRecv = Socket::createSocket();//创建一个UDP数据接收端口 sockSend = Socket::createSocket();//创建一个UDP数据发送端口

sockRecv->bindUdpSock(9001);//接收UDP绑定9001端口
sockSend->bindUdpSock(0, "0.0.0.0");//发送UDP随机端口

sockRecv->setOnRead([weakSelf](const Buffer::Ptr &buf, struct sockaddr *addr , int){
        //接收到数据回调
       // DebugL << "recv data form " << getIP(addr) << ":" << buf->data();
    auto strongSelf = weakSelf.lock();
    if(!strongSelf) {
        return ;
    }
    strongSelf->handleOneRtp((uint8_t *) buf->data(), buf->size());
});

我创建了以后,关闭程序的时候会报如下错误, the inferior stopped because it received a signal from operating system

Signal name :SIGSEGV

TRANS_BY_GITHUB_AI_ASSISTANT

downloadproject avatar Oct 28 '22 07:10 downloadproject

你这个代码看起来没什么问题

xia-chu avatar Oct 28 '22 09:10 xia-chu

您好,我用qt6,整个工程就写了一条语句Socket::Ptr sockRecv = Socket::createSocket();//创建一个UDP数据接收端口,在调试状态关闭程序,程序会崩溃,恳请指教,谢谢!

downloadproject avatar Oct 31 '22 06:10 downloadproject

可以看下栈信息.

wasphin avatar Nov 01 '22 15:11 wasphin

实在不好意思,打扰了,我调试您的test_tcpClient时,注释了最后的semaphore几条语句 ,在debug下,程序会报错,恳请指教!谢谢!

int main() { // 设置日志系统 Logger::Instance().add(std::make_shared<ConsoleChannel>()); Logger::Instance().setWriter(std::make_shared<AsyncLogWriter>());

TestClient::Ptr client(new TestClient());//必须使用智能指针
client->startConnect("127.0.0.1",9000);//连接服务器

TcpClientWithSSL<TestClient>::Ptr clientSSL(new TcpClientWithSSL<TestClient>());//必须使用智能指针
clientSSL->startConnect("127.0.0.1",9001);//连接服务器

//退出程序事件处理
//static semaphore sem;

// signal(SIGINT, { sem.post(); });// 设置退出信号 //sem.wait(); return 0; }

downloadproject avatar Nov 10 '22 03:11 downloadproject

您好,调试test_udpSock时,我将while(!exitProgram) 改成 if(!exitProgram) 在debug下,程序也会崩溃。

the inferior stopped because it received a signal from operating system

Signal name :SIGSEGV

downloadproject avatar Nov 10 '22 03:11 downloadproject

不好意思,能帮我看下么?谢谢!!

downloadproject avatar Nov 15 '22 05:11 downloadproject

您好,调试test_udpSock时,我将while(!exitProgram) 改成 if(!exitProgram) 在debug下,程序也会崩溃。

the inferior stopped because it received a signal from operating system

Signal name :SIGSEGV

这个测试也没能复现。你可以用 gdb 调试下看看。

wasphin avatar Nov 16 '22 05:11 wasphin

好的,谢谢!

downloadproject avatar Nov 17 '22 02:11 downloadproject