Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[内容有误] Arbiter 2.0 还需要开栈吗? #5419

Closed
1 task
HeRaNO opened this issue Feb 20, 2024 · 2 comments
Closed
1 task

[内容有误] Arbiter 2.0 还需要开栈吗? #5419

HeRaNO opened this issue Feb 20, 2024 · 2 comments
Labels
Content Bug / 页面内容有误 Something isn't working help wanted / 需要帮助 Extra attention is needed

Comments

@HeRaNO
Copy link
Collaborator

HeRaNO commented Feb 20, 2024

请选择:

  • 我正在着手修复这个问题

我正在访问这个页面

https://oi-wiki.org/tools/judger/arbiter/

我发现页面有这样的问题

2ab997f 这个 commit 引入了

由于Linux运行时栈限制,如果要开无限栈,应在终端先输入ulimit -s unlimited后执行arbiter打开测评器。

但是最近我使用 Arbiter 2.0,设置内存限制为 256M 递归 $10^6$ 层,没有出现 RE 的问题。可能是 1.x 版本的 bug,但是在 2.0 修复了?

cc @ranwen

@HeRaNO HeRaNO added Content Bug / 页面内容有误 Something isn't working help wanted / 需要帮助 Extra attention is needed labels Feb 20, 2024
@ranwen
Copy link
Member

ranwen commented Feb 20, 2024

感谢您的反馈,但是我现在已经AFO了😇。

我这个commit确实是在上古版本的NOI Linux下做的,当时评测如果不这么跑的话确实是会RE的。但现在NOI Linux更新了,我也不清楚他是怎么搞的,我也不想再下一个NOI Linux去检查这个问题了。

方便的话,欢迎您自己提交一个PR来修改这个描述。

关于如何验证这个情况,您可以做一下这些测试:

在终端中直接运行这个程序,观测是否会segmentation fault。确定这个程序是否本身就是会使用大量栈的。注意保持编译选项一致,避免编译器优化影响结果(例如可能进行的尾递归优化)。(我不清楚能不能直接使用arbiter编译出来的程序,可以的话直接用是更好的)

在终端中输入 ulimit -s,程序会输出当前环境下允许使用的栈大小。用这个命令可以检查一下NOI Linux是否是改了默认栈设置,使得所有程序都可以直接跑而不会爆栈。我本地WSL会返回8192,对应8M的默认值。

@HeRaNO
Copy link
Collaborator Author

HeRaNO commented Feb 21, 2024

今天重新测试了一下,不用 Arbiter 的情况如下:

1

Arbiter 的配置如下:

2

直接在 GUI 下启动的情况下挂掉了

3

result 文件如下

4

可能之前写了尾递归,但是之前测试我没有开 -O2,看了一下汇编不会优化,挺怪的。但是这个测试应该比较有代表性。

开了栈之后就 OK 了

5

@HeRaNO HeRaNO closed this as not planned Won't fix, can't repro, duplicate, stale Feb 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Content Bug / 页面内容有误 Something isn't working help wanted / 需要帮助 Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants