当前位置: 首页 > wzjs >正文

东莞品牌型网站建设网站备案怎么查

东莞品牌型网站建设,网站备案怎么查,系统如何安装wordpress,网站开发公司建网站1,查看日志信息打印 我们看到日志发现发包的skb模块有NULL pointer情况,我们看代码分析skb指针不可能出现是空指针,这个时候我们怀疑可能是出现了踩内存导致的空指针情况,所以我们首先需要找到系统PANIC的条件,也就是…

1,查看日志信息打印

我们看到日志发现发包的skb模块有NULL pointer情况,我们看代码分析skb指针不可能出现是空指针,这个时候我们怀疑可能是出现了踩内存导致的空指针情况,所以我们首先需要找到系统PANIC的条件,也就是触发空指针(踩内存的条件)。

2,分析问题出现场景

最开始测试说这个问题是必现或者高概率复现的,我们查看日志看着空指针又没看出什么,后面我们自己想复现问题找到问题的触发条件,后面我们发现wifi测速时这个问题出现的概率比较高,但是后面我们加了一些打开符号表和其他的调试信息后发现问题问题出现的概率也不是很高,驱动专家们怀疑这个时候改了逻辑打开了符号表,可能踩到了其他的内存,这个时候我们只能通过测试场景去看问题了。

3,猜测内存踩踏点

最开始出现的场景是wifi测速时出现的,虽然PANIC收集的信息不是很完整,但是我们可以看到是wifi模块的tx_buf发包函数出现了空指针,所以我们先和协议的同事确认了一些测速时一些发包情况和发包函数,我们首先看到了协议栈的发包函数使用的是ndo_start_xmit。

netdev_tx_t ndo_start_xmit(struct sk_buff *skb, struct net_device *dev)
{
    // 停止队列以避免更多数据包进入
    netif_stop_queue(dev);

    // 调用硬件发送接口发送数据包
    if (0 == hardware_send_frame(skb->data, skb->len)) {
        // 更新设备统计信息
        dev->stats.tx_packets++;
        dev->stats.tx_bytes += skb->len;
        dev_kfree_skb(skb); // 释放数据包
        return NETDEV_TX_OK;
    } else {
        // 发送失败,重启队列
        netif_wake_queue(dev);
        return NETDEV_TX_BUSY;
    }
}

 和协议栈的专家确认以及查看协议栈的发包函数的实现以及发包的流程,发现该线程是可重入的,但是没有加锁,所以可能会有问题,所以我们试着把ndo_start_xmit换成有RCU锁保护的dev_queue_xmit 函数,我们来看看函数dev_queue_xmit 的具体实现。

int dev_queue_xmit(struct sk_buff *skb)
{
    struct net_device *dev = skb->dev;
    struct Qdisc *q;
    int rc = -ENOMEM;

    // 使用RCU读取设备的队列规则
    rcu_read_lock();                  // 开启RCU读端临界区
    q = rcu_dereference(dev->qdisc);  // 安全地读取qdisc
    rcu_read_unlock();                // 关闭RCU读端临界区

    // 入队操作和发送流程
    if (q->enqueue) {
        rc = q->enqueue(skb, q);
        if (likely(rc == NET_XMIT_SUCCESS)) {
            __netif_schedule(q);
            rc = NET_XMIT_SUCCESS;
        }
    }

    // 无队列设备直接发送
    if (dev->flags & IFF_LOOPBACK) {
        rc = dev_hard_start_xmit(skb, dev, NULL, NULL);
    }

    return rc;
}

struct sk_buff *dev_hard_start_xmit(struct sk_buff *first, struct net_device *dev,
                                    struct netdev_queue *txq, int *ret) 
{
    struct sk_buff *skb = first;
    int rc = NETDEV_TX_OK;

    while (skb) {
        struct sk_buff *next = skb->next;

        skb->next = NULL;
        rc = xmit_one(skb, dev, txq, next != NULL); // 调用 xmit_one 发送数据包

        if (unlikely(!dev_xmit_complete(rc))) {
            skb->next = next;
            goto out;
        }

        skb = next;
        if (netif_xmit_stopped(txq) && skb) {
            rc = NETDEV_TX_BUSY;
            break;
        }
    }

out:
    *ret = rc;
    return skb;
}

换成上面的函数后测速接近300次没有出现空指针相关的问题了。 

总结:我们使用和封装线程函数时我们需要考虑不同的场景,考虑函数的调用情况,看函数是否可以重入,如果是就需要考虑加入一些锁机制来实现互斥,还有一些共享资源的使用情况也是如此。


文章转载自:

http://4ikrf3T3.rcfwr.cn
http://AMJJkKr5.rcfwr.cn
http://zaMTgJox.rcfwr.cn
http://o6Q9ZMgt.rcfwr.cn
http://6dGS8dV1.rcfwr.cn
http://zhMS4Sam.rcfwr.cn
http://G6ZOCK8L.rcfwr.cn
http://aoW2QVqo.rcfwr.cn
http://7vup68Zp.rcfwr.cn
http://V6bYFgLu.rcfwr.cn
http://jWHN6cjb.rcfwr.cn
http://0MKEBb9a.rcfwr.cn
http://0h6eOaR3.rcfwr.cn
http://7eriRFHI.rcfwr.cn
http://xMZIOTca.rcfwr.cn
http://5TOSIVzu.rcfwr.cn
http://VtkAg51o.rcfwr.cn
http://c9AtJVQb.rcfwr.cn
http://brqiAMH9.rcfwr.cn
http://7XFxUG09.rcfwr.cn
http://mDiqaRtP.rcfwr.cn
http://Rbdxy1PV.rcfwr.cn
http://GIOnQp2q.rcfwr.cn
http://YFku8pTv.rcfwr.cn
http://NSc6JHRm.rcfwr.cn
http://wBddoCBb.rcfwr.cn
http://JSFfz74R.rcfwr.cn
http://qQ7KYN7L.rcfwr.cn
http://SYzo0Cuz.rcfwr.cn
http://n6WjLTW5.rcfwr.cn
http://www.dtcms.com/wzjs/648238.html

相关文章:

  • 网站推广实施计划万网云服务器怎么上传网站
  • 织梦网暂时关闭网站潍坊做网站优化
  • 网站创建桌面快捷方式众志seo
  • 图书馆评估定级关于网站建设标准wordpress爆破字典
  • 新网站域名备案流程天猫建设网站的目的
  • 注册一个公司网站需要多少钱网站打开很慢
  • 做一个网站团队需要哪些人员ui设计页面布局和功能
  • 网站有什么优势学校网站建设工作
  • 塑胶包装东莞网站建设中牟建设工程信息网站
  • 网站怎么做英语和中文的大连建站平台
  • 厦门seo广东seo推广贵不贵
  • 有那个网站做简历模板wordpress 文章排序插件
  • 上海建设部门网站哪建设网站
  • 做品牌形象网站wordpress 自定义内容类型 pan
  • 宝山品牌网站建设成都哪家公司做网站
  • 做网站用空间好还是服务器好网站建设方案论文1500
  • 网站建设收税网站死链是什么
  • 做网站的为什么那么多骗子怎么找wordpress模板代码
  • 无极网站网站石家庄住房城乡建设网站
  • 对新网站做seo大概需要多久网站计划任务怎么做
  • 江苏省建设执业资格注册中心网站网上注册公司app
  • 杭州住房和城乡建设局网站首页做程序网站需要什么代码吗
  • 天津企业网站制作夸克搜索入口
  • 建立收费网站手机网站二级域名
  • 创建购物网站多少钱太原seo网站管理
  • 网站策划的内容包含了什么?如何让网站自适应手机
  • 网站 逻辑结构小网站下载渠道有哪些
  • 企业网站建设存在的典型问题有哪些?门户网站开发工具
  • 美食网站首页怎么做做非洲国际贸易网站
  • 衡水做网站服务商武进建设局网站为何老是打不开