瓦尼什如何遇到切里3/N

在仍然失败的四项测试中,有三项使用了“文件装卸工”。

在Cheri下不能做的事情:共享文件中的指针

在Varnish中,“装卸工”负责编排缓存对象的存储,它是一个API扩展点。

“Malloc装卸工”是默认的,它做的完全是你认为它做的事情。

文件装卸工, mmap(2) 是文件系统中的一个文件,并根据需要进行分区,非常类似于 malloc(3) 就行了。

“文件”装卸工之所以存在,主要是因为早在2006年,就用 MAP_NOCORE 是避免将整个对象缓存包括在核心转储中的唯一方法。

但Cheri不会允许您将指针放入常规文件 mmmap(2) ‘编辑 MAP_SHARED ,因为这将允许另一个进程,甚至可能在不同的计算机上, mmap(2) 该文件 MAP_SHARED 稍后,言下之意是让这些指针复活。

第1部分中提到的“坚持不懈的”装卸工做了同样的事情,并且由于同样的原因在Cheri的领导下不工作。

如果我们改为映射该文件 MAP_PRIVATE ,其他人将永远不能看到指针,并且这三个测试用例通过:

MAP_SHARED pointers
=====================
TEST tests/b00005.vtc
TEST tests/r02429.vtc
TEST tests/s00003.vtc

(我们不能对“持久的”装卸工做同样的事情,因为它存在的唯一原因正是为了在以后复活那些指针。)

最后,也是非常糟糕的测试用例

如前所述,当您有100K线程时,您必须节省内存,尤其是线程堆栈。

但是,如果你调得太紧,线程就会跳出堆栈,导致核心转储。我们试图在这种情况下对诊断有所帮助,我们有一个测试用例试图实现这一点。

这个测试用例是一个相当令人讨厌的工作,而且出于所有的意图和目的,它只是Cheri应该为我们做的事情的一个廉价的erzats,所以我将在它上面下注,并进入这个项目更有趣的部分:

SigSegv handler test
=====================
TEST tests/c00057.vtc

/phk