【发布时间】:2015-10-30 00:57:06
【问题描述】:
我的实验代码在裸 x86_64-metal 上运行时崩溃(IDT 尚未设置时出现页面错误),但在 aarch64 上运行良好。
通过仔细追踪,我发现这个页面错误的原因包括作为参数传递给core::fmt::ArgumentV1::new() 函数:
#[doc(hidden)]
#[unstable(feature = "fmt_internals", reason = "internal to format_args!")]
pub fn new<'b, T>(x: &'b T,
f: fn(&T, &mut Formatter) -> Result) -> ArgumentV1<'b> {
unsafe {
ArgumentV1 {
formatter: mem::transmute(f),
value: mem::transmute(x)
}
}
}
AFAIK 这个值是由 rustc 编译器硬编码的,是 format_args 编译时处理的结果!可变参数。
也许您对这个案例有什么问题有建议。谢谢。
【问题讨论】:
-
这听起来像一个 rustc 错误;在 GitHub 上试试 opening an issue。