Bug类型
- 任务Post失败 Bug
正确版本程序
- apps/benchmark/BlinkPostFail
程序描述
定时器每隔0.25s提交任务TestTask,任务
TestTask的功能是切换LED0的状态;如果任务Post提交成功,切换LED1的状态,否则切换LED2的状态。
Avrora运行程序
- alias avrora=’java -jar avrora-beta-1.7.113.jar -colors=false -banner=false’;
- make mica2;
- mv build/mica2/main.exe bpf.elf;
- avrora -platform=mica2 -monitors=leds -seconds=4 -simulation=sensor-network bpf.elf “
运行结果分析(正确版本)
- LED0,LED1切换结果正确;
- LED2不切换(即post返回SUCCESS)。
bug版本程序
- /apps/benchmark/bm_BlinkPostFail
程序修改的部分
- 增加任务TestTask的post频率:Timer0.fired()
事件中添加循环操作,使得每0.25s内增加10次Post操作。
bug的显现条件
5. 相同任务过于频繁地提交
Bug症状
- LED2也会发生切换(表示post返回FAIL);
- 运行net.tinyos.tools.PrintClient程序会显示任务提交失败信息:Post Operation Fail!
备注
- TinyOS2.x中,仅当任务已经被提交但还没有
被执行时,即任务队列中已经有相同任务时,返
回FAIL,并且不会将该任务插入到队列; - 如果没有相同任务时,则返回SUCCESS。