Giter VIP home page Giter VIP logo

Comments (4)

 avatar commented on May 22, 2024

看了相关的代码,并没有发现buf.addSize在处理rn=0的逻辑有问题。你能否提供重现问题的例子呢?

from handy.

virqin avatar virqin commented on May 22, 2024

@yedf 昨晚找了一下出问题的情况,我这边使用udp-svr/udp-cli进行测试收发,问题在于下面makeRoom和space执行的顺序:
ssize_t rn = recvfrom(fd, buf.makeRoom(kUdpPacketSize), buf.space(), 0, (sockaddr*)&raddr, &rsz);
这样没有问题:

char *pbuf = buf.makeRoom(kUdpPacketSize);
ssize_t rn = recvfrom(fd, pbuf, buf.space(), 0, (sockaddr*)&raddr, &rsz);

深究的话似乎是参数压栈顺序从右向左,而space方法依赖makeRoom,就是先调用space的话返回0

延伸:你那边没有问题吗?并且UDP允许发送0字节的数据,rn=0的话就会出现释放内存错误*** Error in./udp-cli': double free or corruption (top): 0x0000000000f555e0 ***

使用库的makefile编译的:

debian:~$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2

from handy.

 avatar commented on May 22, 2024

我原先的代码直接调用space是有问题的,你的修复方式是可行的,已经修复为
ssize_t rn = recvfrom(fd, buf.makeRoom(kUdpPacketSize), kUdpPacketSize, 0, (sockaddr*)&raddr, &rsz);
rn=0导致了buffer在复制时的一个bug,已经修复
谢谢你的issue

from handy.

virqin avatar virqin commented on May 22, 2024

👍

from handy.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.