5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 3386|回复: 27
打印 上一主题 下一主题

Pixhawk 飞控代码中的一处BUG

[复制链接]
跳转到指定楼层
楼主
发表于 2014-5-9 00:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在 src/modules/systemlib/param/param.c 文件的param_save_default函数

511行。res变量没有初始化 。导致后面的param_export函数可能不会执行


int
param_save_default(void)
{
        int res;
        int fd;

        const char *filename = param_get_default_file();

        /* write parameters to temp file */
        fd = open(filename, O_WRONLY | O_CREAT);

        if (fd < 0) {
                warn("failed to open param file: %s", filename);
                return ERROR;
        }

        if (res == OK) {
                res = param_export(fd, false);

                if (res != OK) {
                    warnx("failed to write parameters to file: %s", filename);
                }
        }
。。。。
}


这个判断逻辑究竟是什么 还不清楚,问题已经提交到px4项目, 暂时可以将511行的res 赋值为OK来规避


欢迎继续阅读楼主其他信息

28
发表于 2014-11-5 00:23 | 只看该作者
liio 发表于 2014-5-9 00:44
Px4那边确认了这是一个重要的问题,不过他们打算把那行判断给删除来解决。来不及等官方更新的同学自己编译 ...

这个编译的时候应该会warning吧?

27
发表于 2014-11-4 22:28 | 只看该作者
楼主,我才开始接触开源控,完全外行,去pix官网下载源码,不知道为什么网页就是打不开,48282475@qq.com是我的邮箱,能不能麻烦你给我发一份你手上的资料和源码啊,谢谢了

26
发表于 2014-9-1 11:08 | 只看该作者
这是导出参数的代码吧,是ardupilot的还是Qground的?
25
发表于 2014-9-1 10:50 | 只看该作者
我就喜欢会写代码的程序猿
24
发表于 2014-8-14 13:25 | 只看该作者
我就是来看看   啥也看不懂
23
发表于 2014-8-14 13:11 | 只看该作者
顶级高手,看不明白
22
发表于 2014-8-14 12:45 | 只看该作者
厉害 都是高手    反正我看得懂 - -
21
发表于 2014-8-14 12:25 | 只看该作者
liio 发表于 2014-5-9 00:44
Px4那边确认了这是一个重要的问题,不过他们打算把那行判断给删除来解决。来不及等官方更新的同学自己编译 ...

学习,学习了。。俺 天天搞硬件,很久没搞软件了。

件:昨晚上给飞机轴钻孔,孔里冒出来 闪光的火星铁带

*******************************************

请问楼主:如何 构建 一个 编译环境??(XP系统 永不升级)

我这里 没有宽带网络,无法下载 超过 5MB 的文件,,,

我愿意 支付费用:请你 把你的 “编译”软件 套包,

刻成光盘——邮寄——可以吗??(我练习用 120元 可以吗)

_131 0126 5948_重庆

20
发表于 2014-7-24 09:30 | 只看该作者
牛。。。。。。。
19
发表于 2014-7-24 09:01 | 只看该作者
lili,请问 你的qq 多少啊,我是 研究生,我们组 几个小伙伴 正在研究 pixhawk 这套代码,编译的时候 也出现了问题,我qq 是2475870358,希望 能加你联系一下,谢谢!

18
发表于 2014-5-23 23:59 | 只看该作者
liio 发表于 2014-5-19 00:41
fd在上面已经判断拉~
这个不是程序员的错, 一般在大量的分支合并和版本***迭代时代码的支线合入或合并 ...


上面的是<0的判断,后面用==OK的判断,没矛盾....就好像前面是<0一种情况,然后==0一种情况,>0又是一种情况,所以不能直接用 if else,只能判断两次
17
 楼主| 发表于 2014-5-19 00:41 | 只看该作者
zmin21 发表于 2014-5-18 11:57
主要是没完整研究代码,就这几句的来看,我觉得  if (res == OK) 里面的res可能写错了,应该是fd的,程序员 ...

fd在上面已经判断拉~
这个不是程序员的错, 一般在大量的分支合并和版本***迭代时代码的支线合入或合并补丁时容易发生这种错误
目前px4主线版本和稳定版都已经合入了这个BUG

16
发表于 2014-5-18 11:57 | 只看该作者
主要是没完整研究代码,就这几句的来看,我觉得  if (res == OK) 里面的res可能写错了,应该是fd的,程序员不会逗比到随便没实体化的变量去判断的!
15
发表于 2014-5-18 09:57 | 只看该作者
崇拜。代码什么的最难了

来自苹果客户端
14
发表于 2014-5-18 01:13 | 只看该作者
代码还不成熟啊,影响飞行品质!
13
发表于 2014-5-9 10:51 | 只看该作者
jujumao 发表于 2014-5-9 10:46
指定编译参数就另说了,不过还是初始化安全点。

对,而且最好加上-Wuninitialized来检查一下是不是有没初始化的变量

12
发表于 2014-5-9 10:46 | 只看该作者
dawanpi 发表于 2014-5-9 10:13
这个参数呢?-finit-local-zero,不过我没试过

指定编译参数就另说了,不过还是初始化安全点。


11
发表于 2014-5-9 10:13 | 只看该作者
jujumao 发表于 2014-5-9 10:02
局部变量不会自动初始化为0的

这个参数呢?-finit-local-zero,不过我没试过

10
发表于 2014-5-9 10:02 | 只看该作者
dawanpi 发表于 2014-5-9 09:46
展开OK的宏定义是多少,0?编译器在有些编译参数的情况下会自动把变量初始化成0的,所有那个param_export还 ...

局部变量不会自动初始化为0的

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

快速回复 返回顶部 返回列表