主题:美国码农发现丰田代码缺陷,会导致加速且无法控制,狂抽皇军伪军以及NASA大嘴巴
正序浏览
主题图片汇总
主题内检索
浏览:16494 回帖:323
游客没有回帖权限
禁言中
泡网分: 1.249
主题: 21
帖子: 3330
注册: 2012年2月
兔子特饱 发表于 2013-10-28 03:05
正在看这个证词,CPU好像是NEC.model=V850, ECU是denso开发的..

compiler是green hill的

语言是C

code analysis查出来很多的coding style的毛病(比如用了很多的全局变量等等).


可能在华强北买了假冒芯片。

美国的战斗机都用这个。

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 10.08
主题: 13
帖子: 1348
注册: 2009年6月
强劲脚力 发表于 2013-10-27 23:24
说的应该是发动机ECU程序了,这东西说是嵌入式系统也行,我觉得更倾向于单片机,拆开过,看着也真是单片机,这东西的复杂程度远远不到手机...


现在的发动机ecu程序很复杂的。全球也就几个公司有那能力干好。

我前公司就是做ecu的,绝大部分bug都是内存问题。主要是程序员对c语言掌握不透不深。

也有些是芯片内置代码有问题,比如瑞萨某款32位芯片,我们就发现了一个很罕见的问题,日本总部分析后认为是他们内置代码用的库函数有问题。我也发现某款
本帖由安卓客户端发布
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
no unit test, no dependency injection, no mock, no ioc?
So the code complexity and the McCabe Code Complexity
21  is one of the measures of that. And the code complexity for
22  Toyota's code is very high. There are a large number of
23  functions that are overly complex. By the standard industry
24  metrics some of them are untestable, meaning that it is so
25  complicated a recipe that there is no way to develop a
***** THIS TRANSCRIPT HAS NOT BEEN PROOFREAD *****
66
1  reliable test suite or test methodology to test all the
2  possible things that can happen in it.
3  Some of them are even so complex that they are what
4  is called unmaintainable, which means that if you go in to
5  fix a bug or to make a change, you're likely to create a new
6  bug in the process. Just because your car has the latest
7  version of the firmware -- that is what we call embedded
8  software -- doesn't mean it is safer necessarily than the
9  older one.
10  So the metrics that I see in the source code that I
11  will talk more in specific with you about, they predict that
12  there are many more bugs.
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
adonishong 发表于 2013-10-28 03:00
这事儿听着不科学啊,这个ecu啥厂商开发的?听着不像是日本软件厂商的水平。。。但是话说回来,即使不是日本人开发的,日本人当年的QA也还是很有名的啊,看来日本全面堕落了啊

正在看这个证词,CPU好像是NEC.model=V850, ECU是denso开发的..

Then there is a second rectangular chip here, and
7  that chip is what has been referred to by various witnesses
8  as the monitor CPU, the ESP-B2 and sometimes the sub-CPU.
9  Importantly, each of those is a processor with its own
10  software. Then, of course, all together they comprise an
11  embedded system.


compiler是green hill的

语言是C

code analysis查出来很多的coding style的毛病(比如用了很多的全局变量等等).

本帖最后由 兔子特饱 于 2013-10-28 03:10 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 22.92
主题: 101
帖子: 2876
注册: 2007年7月
兔子特饱 发表于 2013-10-28 02:56
@今若是

我建议你还是不要买lc了...


这事儿听着不科学啊,这个ecu啥厂商开发的?听着不像是日本软件厂商的水平。。。但是话说回来,即使不是日本人开发的,日本人当年的QA也还是很有名的啊,看来日本全面堕落了啊 本帖最后由 adonishong 于 2013-10-28 03:00 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
@今若是

我建议你还是不要买lc了...
Did you find all the bugs in the software that you
11  reviewed?
12  A Absolutely not.
13  Q Why not?
14  A Because there is a lot of bugs, and all indications
15  are that there are many more. We haven't specifically gone
16  out looking for bugs. The metrics, like the code complexity
17  and a number of global variables, indicate the presence of
18  large numbers of bugs. And just the overall style of the
19 coded is suggestive that there will be numerous more bugs
20 that we haven't found yet.
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
https://www_dropbox_com/s/wnzqidngrtj8y2l/Bookout_v_Toyota_Barr_REDACTED.pdf

正在看这个法庭证词,很好看...
Thankfully no. The source code review involves
7  looking at electronic documents on computers. There is
8  basically a room the size of a small hotel room that is
9  disconnected from the Internet, no cell phones allowed
10  inside or would work inside. In that room there is about
11  five computers and some cubicles.
12  In there, it is possible to believe view on the
13  computer screen Toyota's source code. We couldn't take any
14  paper in, take any paper out, couldn't wear belts, watches.
15  There was a guard. It was worse than airport security was
16  on the way here. Each time in and out, even to go to the
17  bathroom.

NASA was brought in to look at source code because
6  NHTSA couldn't get to the heart of the problem, it didn't
7  have any software engineers on staff. So NASA was given
8  access to a few model years of Camry source code, as I
9  understand it, at a Toyota facility in California.
10  They didn't have as much time. They didn't have as
11  many vehicles, and so what we did actually was to build on
12  their work. First, we confirmed that what they were seeing
13  was consistent with what we were seeing, at least for the
14  vehicles that they had, the 2005 Camry was the one they
15  wrote about. And we also dug deeper, and so we pushed on
16  various topic issues researching different aspects of the
17  software design.

And I know we will talk about it in depth as we go
3  along, but did NASA have access to as much information as
4  you ultimately had in reaching conclusions about Toyota
5  software?
6  A No. Even just for the 2005 Toyota Camry we had more
7  documents, we had more source code, we had more things than
8  NASA had.


本帖最后由 兔子特饱 于 2013-10-28 02:44 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 22.92
主题: 101
帖子: 2876
注册: 2007年7月
巨大防抖 发表于 2013-10-28 02:18
你犯贱不反贱,是你自己的事,而既然你玩到了咬文嚼字的地步,则关于语文,我要说几句,为什么呢?

1、你前面和我争了半天,是在辩护你的现在的这个意思吗?
2、前面讲过,我这个不仅包括内存失序(memory corruption)的意思,也包括上下文中讲的重要变量未作保护、时序对位失序等的意思(race),你觉得变量对位失效,内存失序好,还是内存数据被破坏好懂,切实?至于你的出错条件下,安全运行,我的即便失效也要无害运行,只要看看wiki的相关定义的原文:fail(出错?失效?)harm(伤害?不安全?),你自己斟酌。


哥们儿, 你才看出来我在和你说的问题是文字问题啊? 你是混国外的吧? 中文用少了所以生疏了吧? 我在本楼发的第一帖就指出了, 你和mcv之间, 你的所谓内存管理还是变量对位失序的说法, 直接是个错误, 就是不存在这样的说法(内存管理说的是别的事儿), 就是这事儿不是你这么说的. 同样一件事儿@mcv说的才是对的.

另外, 看来你是真不知道自己中文用的不好, 又或者您是个前辈, 习惯的文法和现在大陆不太一样. 你可以另外发起一个投票, 问问看到底是"变量对位失效, 内存失序"好懂还是"内存数据被破坏好懂". 我再强调一次, 我的观点就是, 你的说法第一, 业界就没有这么说的; 第二, 单纯从字面上说, 你的说法就是没法理解的. 我同时可以在这里告诉你, 我指出你的用词大众没法看懂, 其实是在帮你, 帮你认识到你的问题. 如果你不能面对, 我也没办法. 我也只能做到这里了. 包括你关于fail-safe的说法, 那会儿我就看了wiki一眼, 我就知道你是用的wiki提供的描述进行的翻译了, 可是问题在于你的翻译实在没法看啊...

顺便说一下, memory corruption您已经祸害了, 别再祸害race condition了好不...

本帖最后由 adonishong 于 2013-10-28 02:40 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
@今若是
下面的是这个Barr的博客上总结,他很平和的说:NASA从来没说:不是软件的问题,NASA说的是:NASA没有找出软件哪儿有问题.
In a nutshell, the team led by Barr Group found what the NASA team sought but couldn’t find: “a systematic software malfunction in the Main CPU that opens the throttle without operator action and continues to properly control fuel injection and ignition” that is not reliably detected by any fail-safe. To be clear, NASA never concluded software wasn’t at least one of the causes of Toyota’s high complaint rate for unintended acceleration (UA); they just said they weren’t able to find the specific software defect(s) that caused UA. We did.

http://embeddedgurus_com/barr-code/2013/10/an-update-on-toyota-and-unintended-acceleration/
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
"Task X calculates target throttle angles, monitors for system failures and enters fail safe modes. The death of Task X freezes the target throttle angle. When task X dies, the fail safe mode is not triggered unless the driver removes her foot from the brake pedal for a minimum of 208 ms."

如果这段是对的: 如果内存某段垮掉后,task x会死,那进气口throttle的位置就会固定,如果那时是WOT,车子就会无端加速. 进入保护模式的步骤是等于要求司机在发现车子无端加速后,踩刹车车子停不下来时,要反下意识的把脚从刹车上抬起来至少0.208秒... 估计在司机非常害怕的情况下,把脚从刹车上抬起来是很难做到的...
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 30.171
主题: 9
帖子: 739
注册: 2002年9月
应该是变量运算溢出导致。这个在嵌入式系统是常见的。看来丰田的流程有很大漏洞。
本帖由安卓客户端发布
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 1.203
主题: 9
帖子: 1086
注册: 2011年10月
adonishong 发表于 2013-10-28 02:04
不知道"变量对位失效"好懂还是"内存数据被破坏"好懂... "即便失效, 也好无害运行"好懂还是"出错条件下, 安全运行"好懂...

啊呀, 我有犯贱了...


你犯贱不反贱,是你自己的事,而既然你玩到了咬文嚼字的地步,则关于语文,我要说几句,为什么呢?

1、你前面和我争了半天,是在辩护你的现在的这个意思吗?
2、前面讲过,我这个不仅包括内存失序(memory corruption)的意思,也包括上下文中讲的重要变量未作保护、时序对位失序等的意思(race),你觉得变量对位失效,内存失序好,还是内存数据被破坏好懂,切实?至于你的出错条件下,安全运行,我的即便失效也要无害运行,只要看看wiki的相关定义的原文:fail(出错?失效?)harm(伤害?不安全?),你自己斟酌。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
@今若是
这是另外一篇文章的一段:
An Oklahoma County jury found Toyota liable Thursday; later that day, Toyota reached a settlement rather than allowing the jury to decide punitive damages.

A side note: When I was discussing a "Task X" fatality unearthed by the experts, I asked Barr why it's called Task X. Does X mean something specific?

"Ah, that's interesting," he said. "You know, I'm not allowed to say what Task X is." It is one of the dozens of tasks of the 2005 Camry L4 software, and all 24 tasks are meant to run all the time. Under a court agreement, Barr is not allowed to disclose which one is X. When he testified about Task X, the judge had to clear the courtroom, except for the jury.

Wow. The mystery of Task X.

We'll be discussing this case further in news and blogs at EE Times and in technical articles by sister publications, such as EDN and Design News. Stay tuned. Meanwhile, if you know anything about X...

http://www_eetimes_com/author.asp?section_id=36&doc_id=1319910

就是说这个Barr在上周4法庭上作证偷油败了后,偷油立刻和解了,而不让陪审团决定惩罚的判决... 也许偷油确实事先知道程序错在哪里? 另外就是机器有24个运程,其中的一个会垮... 这么看,这个ECU有自己的操作系统? 运程的管理怎么做?这些估计过些时候就知道了...
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 22.92
主题: 101
帖子: 2876
注册: 2007年7月
巨大防抖 发表于 2013-10-28 02:00
道理其实很简单,因为memory corruption没有恰当对应的中文译名,所以我结合上下文,予以意译,包括这个意思,也包括上下文中内存被意外修改的意思,作为对不熟悉英语的朋友的简介,怎么不可以吗?

就好比fail-safe,我若为了让不了解英语和计算机的朋友理解将其翻译成即便失效,也好无害运行,以示与所谓的容错系统的区别,怎么,不合适吗?你觉得不恰当,你说,你的方案是什么,可以拿出来让大家看看。


不知道"变量对位失效"好懂还是"内存数据被破坏"好懂... "即便失效, 也好无害运行"好懂还是"出错条件下, 安全运行"好懂, 另外在系统因为某种问题发生的条件下, 发生了错误, 但是系统仍然可以安全的运行, 也就是说系统是具备容许犯错的能力的, 也就是容错系统, 啊, 是吧...

啊呀, 我又犯贱了, 默念人艰不拆去了...

本帖最后由 adonishong 于 2013-10-28 02:09 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 1.203
主题: 9
帖子: 1086
注册: 2011年10月
道理其实很简单,因为memory corruption没有恰当对应的中文译名,所以我结合上下文,予以意译,包括这个意思,也包括上下文中内存被意外修改的意思,作为对不熟悉英语的朋友的简介,怎么不可以吗?

就好比fail-safe,我若为了让不了解英语和计算机的朋友理解将其翻译成即便失效,也要无害运行,以示与所谓的容错系统的区别,怎么,不合适吗?你觉得不恰当,你说,你的方案是什么,可以拿出来让大家集思广益。

adonishong 发表于 2013-10-28 01:51
memory corruption, 不一定带来崩溃, 至少在原文描述的状况下... 对于一个可靠性很高的系统, 内存中的若干位被破坏, 是不会导致系统失效的, 系统本身应该是可以检测这样的问题, 并且校正错误, 从错误的状态中回到正常的状态中来

"变量对位失序"这六个大字, 不管是六个合体还是两个两个拆开, 变成"变量 对位 失序", 无论用baidu还是用google又或者bing, 都没有搜到他们一起出现过... 所以说奇葩啊. 我本人也了解, 这样一遍又一遍的吐槽, 真的是一个很mean的行为, 我也懂得人艰不拆的道理, 但是, 真的很对不起大家, 这六个大字并排放一起让我实在失去了自控能力, 不得不一遍一遍的吐槽, 不然得被憋死...


本帖最后由 巨大防抖 于 2013-10-28 02:05 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 22.92
主题: 101
帖子: 2876
注册: 2007年7月
巨大防抖 发表于 2013-10-28 01:54
当然可以不翻译,但是至少得理解corruption是什么意思你理解了吗?去查过wiki吗?还是你理解作者的理解就是你理解的那种理解?

至于你这段:

“Memory corruption也好Bit-flips也好, 从字面就可以理解了, 内存被破坏了, 位发生了翻转, 前者自然包含后者. 内存管理? 天哪, 内存管理也好memory management也好, 从来就不知道是用在这个范畴上的. 太特么可怕了”

对照原文这段并不难读的英语

“Memory corruption as little as one bit flip can cause a task to die. This can happen by hardware single-event upsets -- i.e., bit flip -- or via one of the many software bugs, such as buffer overflows and race conditions, we identified in the code.”

简直要让人怀疑你的英语程度,是不是能看懂原文在说什么

至于你后面什么watchdog程序跑飞之类的,说得倒是华丽精彩,但是,你是在反驳我什么呢?证明bit-flip不属于内存失序(memory-corruption)?还是在独白,在表演或自己欣赏自己上下崎岖的句式节奏。


怕了你了, 我没在wiki上查过memory corruption, 我英语程度不太好, wiki上都是英文, 我看不懂, 原文是什么我也看不懂, watchdog什么的我就是在独白, 和你说的变量啥啥的没关系. 上来帮mcv说话@mcv, 我纯粹就是犯贱. 我早该发现你是那种我惹不起的人, 我怕了, 我退散了
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
不清楚嵌入机器...在pc上,有代码段CODE,数据段DATA,如果代码段内存乱了,程序就乱走了,死机都有可能,如果在数据段内存乱了,那计算结果会有问题.如果乱的地方正好是偷油用来存enum的话,也许一个bit 0 或者是 1,代表的含义就完全不一样了...
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 1.203
主题: 9
帖子: 1086
注册: 2011年10月
adonishong 发表于 2013-10-28 01:37
看完你说的话, 简直能把我吓死. 无知不可怕, 张口胡说最吓人了... 首先为什么memory corruption一定得有翻译...

……

Memory corruption也好Bit-flips也好, 从字面就可以理解了, 内存被破坏了, 位发生了翻转, 前者自然包含后者. 内存管理? 天哪, 内存管理也好memory management也好, 从来就不知道是用在这个范畴上的. 太特么可怕了


当然可以不翻译,但是至少得理解corruption是什么意思你理解了吗?去查过wiki吗?还是你理解作者的理解就是你理解的那种理解?

至于你这段:

“Memory corruption也好Bit-flips也好, 从字面就可以理解了, 内存被破坏了, 位发生了翻转, 前者自然包含后者. 内存管理? 天哪, 内存管理也好memory management也好, 从来就不知道是用在这个范畴上的. 太特么可怕了”

对照原文这段并不难读的英语

“Memory corruption as little as one bit flip can cause a task to die. This can happen by hardware single-event upsets -- i.e., bit flip -- or via one of the many software bugs, such as buffer overflows and race conditions, we identified in the code.”

简直要让人怀疑你的英语程度,是不是能看懂原文在说什么

至于你后面什么watchdog程序跑飞之类的,说得倒是华丽精彩,但是,你是在反驳我什么呢?证明bit-flip不属于内存失序(memory-corruption)?还是在独白,在表演或自己欣赏自己上下崎岖的句式节奏。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 22.92
主题: 101
帖子: 2876
注册: 2007年7月
BYY 发表于 2013-10-28 01:47
memory corruption不就是内存崩溃么, 换句话说就某一段内存的内容被修改了,而这个修改并非使用这段内存的程序的本意,早期的windows系统内存没有保护经常出这问题。这个中文对应翻译是什么?变量对位失序这个名词我头一次听说,请问对应的英文是什么,狗了一下没看到。

memory corruption, 不一定带来崩溃, 至少在原文描述的状况下... 对于一个可靠性很高的系统, 内存中的若干位被破坏, 是不会导致系统失效的, 系统本身应该是可以检测这样的问题, 并且校正错误, 从错误的状态中回到正常的状态中来

"变量对位失序"这六个大字, 不管是六个合体还是两个两个拆开, 变成"变量 对位 失序", 无论用baidu还是用google又或者bing, 都没有搜到他们一起出现过... 所以说奇葩啊. 我本人也了解, 这样一遍又一遍的吐槽, 真的是一个很mean的行为, 我也懂得人艰不拆的道理, 但是, 真的很对不起大家, 这六个大字并排放一起让我实在失去了自控能力, 不得不一遍一遍的吐槽, 不然得被憋死... 本帖最后由 adonishong 于 2013-10-28 01:55 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
BYY
禁言中
泡网分: 36.562
主题: 197
帖子: 3671
注册: 2002年7月
巨大防抖 发表于 2013-10-28 01:24
不管我是做什么的,原文说了什么,fail-safe是什么意思,白纸黑字都在,memory-conrupption是什么意思,如果不相信我翻译的,要质疑,那么wiki开放着呢!你可以去查一查,bit翻转是不是属于fail-safe范畴。
哦,对了,关于bit-flip,也是一个专用术语,什么意思,你们也可以去查查,

变量对位失序,是我对memory corruption的意译,你作为一位“驱动开发干了六七年的人, 其中有两年折腾的就是ECU”的人,说说,关于这个术语,你们是怎么翻译的?这个词可不是我提出来的,是你们仰之弥高的原文提出来的

不管是谁,是不是在底层扛活,毫无根据地信口开河,总是会被人蔑视的。

memory corruption不就是内存崩溃么, 换句话说就某一段内存的内容被修改了,而这个修改并非使用这段内存的程序的本意,早期的windows系统内存没有保护经常出这问题。这个中文对应翻译是什么?变量对位失序这个名词我头一次听说,请问对应的英文是什么,狗了一下没看到。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
云漫 发表于 2013-10-28 01:23
这个不好说 ,奥迪当年在美国因为Sudden unintended acceleration灰头土脸,那时候可没有软件吧。后来吉普福特等很多车都出过这毛病。最近Tesla也被人控诉这事。

回到这个问题,我猜想,把别的车厂的程序拿来分析,说不定能找出类似的一堆虫子。软件系统实在太复杂了,要没有虫子目前人类没能力做到。

奥迪的那次,报道的CBS60分钟承认报道作假:人为的往车子里喷东西造成人为的加速. NHTSA后来也证明了那些机器都没有任何问题,都是司机把两个踏板搞混了.

那时是1983年,估计最高级的PC还是8086/80286? 估计车子计算机,也不过是8位的吧,估计内存16K/RAM 8K就差不多撑死了? 有虫子估计也比现在的好找不少...

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 1.203
主题: 9
帖子: 1086
注册: 2011年10月
巨大防抖 发表于 2013-10-28 01:14
接下来,对你的这几点质疑,做一些说明。

第一,我希望您在解释概念的时候,在作说明阐释的时候,最好能像我对memory-corruption所作的阐释那样,给出一定的来历,最好的来源是wiki,而wiki的规矩,您想必也知道,凡是说概念,都需要有出处有来历,以便双方的议论,有一个客观的凭据,而非凭空的幻想。

例如,fail-safe的概念,如果您能去wiki查一下具体定义的话,不难发现,它和容错系统(Fault-tolerant system)之所谓备份复制并非等同,是有区别的。

至于你说的那个危言耸听的题目,我来替你翻译一下:一个bit位翻转足以杀人(Single Bit Flip That Killed)

原文作者在被楼主忽略的第三页上,关于这个一个bit位翻转,有如下的文字说明:

Memory corruption as little as one bit flip can cause a task to die. This can happen by hardware single-event upsets -- i.e., bit flip -- or via one of the many software bugs, such as buffer overflows and race conditions, we identified in the code.

所以,这个题目是在强调即便是一个bit位的翻转那么小的内存失序(Memory corruption),就足以杀人,并 ...


a task to die,其实不完全是杀人的意思,有双关的意思,主要指“杀死”计算机任务。当然系统错误可能造成事故。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 22.92
主题: 101
帖子: 2876
注册: 2007年7月
云漫 发表于 2013-10-28 01:23
这个不好说 ,奥迪当年在美国因为Sudden unintended acceleration灰头土脸,那时候可没有软件吧。后来吉普福特等很多车都出过这毛病。最近Tesla也被人控诉这事。

回到这个问题,我猜想,把别的车厂的程序拿来分析,说不定能找出类似的一堆虫子。软件系统实在太复杂了,要没有虫子目前人类没能力做到。


不知道奥迪那个事儿是什么年代的事情, 只要是电喷的车都应该有ECU, 有ECU就有软件。。。

其实高可靠性系统没那么神秘,人家米国也是有Guideline的,从文章上看,貌似丰田犯的几个错误很低级,那都是第一节上汽车嵌入式系统开发课的时候就开始耳提面命的事儿。。。
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 22.92
主题: 101
帖子: 2876
注册: 2007年7月
巨大防抖 发表于 2013-10-28 01:24
不管我是做什么的,原文说了什么,fail-safe是什么意思,白纸黑字都在,memory-conrupption是什么意思,如果不相信我翻译的,要质疑,那么wiki开放着呢!你可以去查一查,bit翻转是不是属于fail-safe范畴。
哦,对了,关于bit-flip,也是一个专用术语,什么意思,你们也可以去查查,

变量对位失序,是我对memory corruption的意译,你作为一位“驱动开发干了六七年的人, 其中有两年折腾的就是ECU”的人,说说,关于这个术语,你们是怎么翻译的?这个词可不是我提出来的,是你们仰之弥高的原文提出来的

不管是谁,是不是在底层扛活,毫无根据地信口开河,总是会被人蔑视的。

而对bit翻转的保护,从避免内存失序(Memory corruption)的角度上看,显然都是内存管理需要解决的问题。当然这里的内存管理,不仅仅限于软件措施。


看完你说的话, 简直能把我吓死. 无知不可怕, 张口胡说最吓人了... 首先为什么memory corruption一定得有翻译...

Memory corruption也好Bit-flips也好, 从字面就可以理解了, 内存被破坏了, 位发生了翻转, 前者自然包含后者. 内存管理? 天哪, 内存管理也好memory management也好, 从来就不知道是用在这个范畴上的. 太特么可怕了

你那个"变量对位失序", 我就说说可怕在哪里. 内存某一位或者几位翻转, 带来的不一定是数据的错误, 也可能导致程序直接跑飞, 原来应该执行内存中A处的程序, 结果跑飞到不知道什么地方了.这事儿其实人家原文也提到了, 这种情况通常是会有Watchdog, 也叫看门狗监视任务的运行状况的, 发生跑飞了的时候, 通常会自动重设任务的运行状态, 使之重新开始. 而Camery居然没有处理所有这种情况(又或者是所有这种情况都木有处理...) 这个时候, Memory corruption能叫"变量"啥啥么? 还有"对位"还"失序"? 不管是从计算机还是中文, 我都完全无法理解...

巨大防抖 发表于 2013-10-28 01:24
变量对位失序,是我对memory corruption的意译,你作为一位“驱动开发干了六七年的人, 其中有两年折腾的就是ECU”的人,说说,关于这个术语,你们是怎么翻译的?这个词可不是我提出来的,是你们仰之弥高的原文提出来的


这个"变量对位失序"我能顺便问问是神马原文提出来的么? 这个奇葩程度, 对于我等小民, 还真是得拜一下... 本帖最后由 adonishong 于 2013-10-28 01:46 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 1.203
主题: 9
帖子: 1086
注册: 2011年10月
不管我是做什么的,原文说了什么,fail-safe是什么意思,白纸黑字都在,memory-conrupption是什么意思,如果不相信我翻译的,要质疑,那么wiki开放着呢!你可以去查一查,bit翻转是不是属于fail-safe范畴。
哦,对了,关于bit-flip,也是一个专用术语,什么意思,你们也可以去查查,

变量对位失序,是我对memory corruption的意译,你作为一位“驱动开发干了六七年的人, 其中有两年折腾的就是ECU”的人,说说,关于这个术语,你们是怎么翻译的?这个词可不是我提出来的,是你们仰之弥高的原文提出来的

不管是谁,是不是在底层扛活,毫无根据地信口开河,总是会被人蔑视的。

adonishong 发表于 2013-10-28 01:14
巨大防抖, uh... 我看你就别继续你那个说法了, 你这行内人看一眼就知道你不是做底层的, 内存管理压根不是你说的意思, 至于什么"变量对位失序", 这基本上就是一场灾难, 我一个Linux内核开发, 驱动开发干了六七年的人, 其中有两年折腾的就是ECU, 我就压根就没听说过这个词... 你这段话完全就没有解释人家原文说的意思. mcv基本上用了人类可以看懂的语言, 把人家原文说的事儿认真解释了一遍


本帖最后由 巨大防抖 于 2013-10-28 01:28 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 62.166
主题: 17
帖子: 11628
注册: 2005年9月
优质内容勋章
兔子特饱 发表于 2013-10-28 01:11
但我不是你,所以我会接着看旧的BJ40的柴油车,那里面一个软件都没有,全是硬件...


这个不好说 ,奥迪当年在美国因为Sudden unintended acceleration灰头土脸,那时候可没有软件吧。后来吉普福特等很多车都出过这毛病。最近Tesla也被人控诉这事。

回到这个问题,我猜想,把别的车厂的程序拿来分析,说不定能找出类似的一堆虫子。软件系统实在太复杂了,要没有虫子目前人类没能力做到。

本帖最后由 云漫 于 2013-10-28 01:27 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
强劲脚力 发表于 2013-10-27 23:24
说的应该是发动机ECU程序了,这东西说是嵌入式系统也行,我觉得更倾向于单片机,拆开过,看着也真是单片机,这东西的复杂程度远远不到手机系统,就按单片机理解应该没错,它没有一个系统平台,简单说直接就是一段程序,一块ROM放程序及数据表,一块RAM运行程序,所以说到内存管理它都达不到级别,并且比较特别的是软件运行的时候可以直接对某些位操作,事实上是必须对某些位直接操作。

既然是美国码农发现的,估计不是硬件问题,应该是程序问题,栈溢出或者数组越界这种可能性非常小,单片机不像嵌入式系统那样复杂,数据量不大,就那么些可操作内存空间,都能一个个字节数过来,写程序的会非常注意。可能是某些意外情况出现的时候语句非受控地修改了某个关键控制位了,软件出错肯定是丰田责任了,不过,这种问题一旦发现很好解决。

ECU程序主错主要是来源于电磁干扰,汽车上的电磁干扰很严重,启动的时候启动机干扰,行车的时候点火线圈干扰,别的因素影响相对小很高。如果说某次过于高压的点火绕圈放电干扰使ECU某位意外翻转了,然后程序就出错,这种硬件故障都不算什么希奇,错误校验是肯定有的。但如果是程序设计的时候就存在这个隐患,执行的时候就是合理的,则不关校验什么事了,那设计 ...

这个是我手上的跟出事的那台camry同代的偷油ECU(2004 vs 2005),出事的那个是4缸的,我这个是6缸的,麻烦你看一下,是单片还是? 如果要更清晰的照片,我可以再去拍...
本帖最后由 兔子特饱 于 2013-10-28 01:16 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 22.92
主题: 101
帖子: 2876
注册: 2007年7月
巨大防抖 发表于 2013-10-27 19:24
意思就是一些美国的嵌入式专家检查和测试了丰田的控制系统源代码(似乎是2005年 凯美瑞L4-第四代?)之后,发现存在内存管理错误,会导致某些关键性的变量对位失序。——这应该是此前沸沸扬扬的丰田车意外加速问题的原因。

丰田的软件有问题,一个有经验的软件工程师,开过,感觉都能感觉出来,例如,某些型号凯美瑞空调的车内循环开关逻辑混乱,经常导致不可预料的开关行为。

黄种人,在逻辑理性严谨方面,似乎先天不如白种人。

所以,车的电子控制功能,还是适量为好。


mcv 发表于 2013-10-27 20:37
好像不是这意思吧?

我草草看了下似乎是对于一些重要变量缺乏保护,导致单比特翻转错误就可以导致车子突然加速。

这已经是故障安全范畴了。不是那种随便就能发现的逻辑错误。普通的软件工程师根本不会考虑这些问题。

软差错本质上是无法完全避免的,宇宙射线击中DRAM的一个单元就可能让它翻转过来。

所以这个在高可靠性应用中必须加以防护,硬件或者软件的,但是似乎偷油獭漏过了。

很奇怪怎么会出这种问题,不是说鬼子的fail-safe很强的么?

此外如果以前的车有这个问题的话,现在的车弄不好还是有。


巨大防抖, uh... 我看你就别继续你那个说法了, 你这行内人看一眼就知道你不是做底层的, 内存管理压根不是你说的意思, 至于什么"变量对位失序", 这基本上就是一场灾难, 我一个Linux内核开发, 驱动开发干了六七年的人, 其中有两年折腾的就是ECU, 我就压根就没听说过这个词... 你这段话完全就没有解释人家原文说的意思. mcv基本上用了人类可以看懂的语言, 把人家原文说的事儿认真解释了一遍
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
泡菜
泡网分: 1.203
主题: 9
帖子: 1086
注册: 2011年10月
接下来,对你的这几点质疑,做一些说明。

第一,我希望您在解释概念的时候,在作说明阐释的时候,最好能像我对memory-corruption所作的阐释那样,给出一定的来历,最好的来源是wiki,而wiki的规矩,您想必也知道,凡是说概念,都需要有出处有来历,以便双方的议论,有一个客观的凭据,而非凭空的幻想。

例如,fail-safe的概念,如果您能去wiki查一下具体定义的话,不难发现,它和容错系统(Fault-tolerant system)之所谓备份复制并非等同,是有区别的。

至于你说的那个危言耸听的题目,我来替你翻译一下:一个bit位翻转足以杀人(Single Bit Flip That Killed)

原文作者在被楼主忽略的第三页上,关于这个一个bit位翻转,有如下的文字说明:

Memory corruption as little as one bit flip can cause a task to die. This can happen by hardware single-event upsets -- i.e., bit flip -- or via one of the many software bugs, such as buffer overflows and race conditions, we identified in the code.

所以,这个题目是在强调即便是一个bit位的翻转那么小的内存失序(Memory corruption),就足以杀人,并非是说丰田的问题只有bit翻转。而内存失序(Memory corruption)可能是硬件事件,例如一个bit位翻转造成的,也可能是软件造成的。至于你的那个什么fail-safe,是指设计指标,就是即使失效也必须无害运行,和bit翻转内存失序(Memory corruption)之间,不存在你说的那种范畴不范畴的关系。若硬要说范畴关系,那么按照作者上面这段文字,显然硬件引起的bit翻转和软件引起的溢出都属于内存失序范畴。

而对bit翻转的保护,从避免内存失序(Memory corruption)的角度上看,显然都是内存管理需要解决的问题。当然这里的内存管理,不仅仅限于软件措施。

mcv 发表于 2013-10-27 22:26
注意这个题目“Toyota Case: Single Bit Flip That Killed”。这是文章的重点。

bit-filp error是一个专有名词,指的是存储器内某些位意外的翻转,可以由软件或者硬件造成。single bit-filp,指的是单一bit的翻转,由于软件不直接操作bit,所以软件故障很少造成这个问题,通常是硬件导致的。由于宇宙射线或者材料自身的放射性导致的某些bit意外翻转,这是本质上无法彻底避免的。

文章中尤其提及了“He believes that Toyota's engineers sought to protect numerous variables against software- and hardware-cause corruptions, but they failed to mirror several key critical variables, and they made no hardware protection available against bit flips.”

这里面无论是"mirror"还是"hardware protection available against bit flips"都已经是fail-safe的范畴了。mirror是指关键变量具有多个拷贝,从而避免意外修改。"hardware protection available against bit flips"有很多的方法,最常见的就是ECC,服务器的内存带ECC就是这个原因。

当然我并不是说丰田的内存管理没有问题,栈溢出或者数组越界当然也可能造成“software-cause corruptions”。

但是问题的关键是,丰田对 ...


本帖最后由 巨大防抖 于 2013-10-28 01:34 编辑

(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
资深泡菜
泡网分: 33.932
主题: 1038
帖子: 14509
注册: 2009年11月
今是若 发表于 2013-10-27 22:47
我靠,我看到了。刚刚捏个脚的时候用手机看到了。

马马虎虎看明白了一些。就是一些不常见的问题会导致内存里的“关键变量”发生翻转,这个翻转可能会导致车子加速。
本来第一层保护应该是ECC之类,丰田没有做;
第二层保护应该是刹车优先,丰田还没有做。

就这样,也不知道对不对……

我不知道,我对embedded软件设计测试完全不懂...

如果我是你的话,我会先暂停考虑LC的购买了,因为不知道这2005的虫子有没有一直遗传到新版本里来,有没有扩展出一个/N个新虫子...

但我不是你,所以我会接着看旧的BJ40的柴油车,那里面一个软件都没有,全是硬件...
(0)
(0)
只看该作者
不看该作者
加入黑名单
举报
返回顶部
个人图文集
个人作品集
回复主题: 美国码农发现丰田代码缺陷,会导致加速且无法控制,狂抽皇军伪军以及NASA大嘴巴
功能受限
游客无回复权限,请登录后再试