这时候我想起之前因为 Mesa 在没有 tsc (Time Stamp Counter)作为单调时钟源的时候会产生性能倒退的 bug,我添加了 tsc=reliable 内核参数强制让内核使用了 tsc,而内核判定不使用 tsc 的原因就是检测到 tsc 在不同核心内的不同步,如果程序在不同核心之间被调度则 tsc 会发生回退……
现在 Mesa 23.1.6 已经修好了这个 perf regression,我也没有理由继续使用这个危险的选项了。

gitlab.freedesktop.org/mesa/me
gitlab.freedesktop.org/mesa/me

#mesa #timestampcounter #linux #monotonicclock

Last updated 2 years ago

首先用 gdb 对着 coredump 就是一顿搓,发现 crash 实际上是因为一条 assert 失败(Firefox 在这里有一个误导性设计,就是在不开 ubasn 的时候 assert 触发的是访问空指针的 SIGSEGV 而不是一般的 SIGABRT),最后发现是 TimeoutReschedule 里面 aLastCallbackTime 大于了 aCurrentNow(请忽略匈牙利命名法和 CurrentNow 这种鬼畜的命名),但是 Firefox 的 TimeStamp 实现是用的系统的 Monotonic Clock,理论上应当不会发生这种情况才对。

bugzilla.mozilla.org/show_bug.

#firefox #linux #monotonicclock

Last updated 2 years ago