Skip to content

Commit a5e2d71

Browse files
authored
fix(prover): tokio thread stack overflow (#1604)
1 parent 6b837c0 commit a5e2d71

File tree

2 files changed

+38
-30
lines changed

2 files changed

+38
-30
lines changed

prover/config.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
"db_path": "unique-db-path-for-prover-1"
1919
},
2020
"low_version_circuit": {
21-
"hard_fork_name": "Darvin",
21+
"hard_fork_name": "darwin",
2222
"params_path": "params",
2323
"assets_path": "assets"
2424
},
2525
"high_version_circuit": {
26-
"hard_fork_name": "DarvinV2",
26+
"hard_fork_name": "darwinV2",
2727
"params_path": "params",
2828
"assets_path": "assets"
2929
}

prover/src/main.rs

Lines changed: 36 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use scroll_proving_sdk::{
1313
prover::ProverBuilder,
1414
utils::{get_version, init_tracing},
1515
};
16+
use tokio::runtime;
1617
use utils::get_prover_type;
1718

1819
#[derive(Parser, Debug)]
@@ -31,38 +32,45 @@ struct Args {
3132
log_file: Option<String>,
3233
}
3334

34-
#[tokio::main]
35-
async fn main() -> anyhow::Result<()> {
36-
init_tracing();
35+
fn main() -> anyhow::Result<()> {
36+
let rt = runtime::Builder::new_multi_thread()
37+
.thread_stack_size(16 * 1024 * 1024) // Set stack size to 16MB
38+
.enable_all()
39+
.build()
40+
.expect("Failed to create Tokio runtime");
41+
42+
rt.block_on(async {
43+
init_tracing();
3744

38-
let args = Args::parse();
45+
let args = Args::parse();
3946

40-
if args.version {
41-
println!("version is {}", get_version());
42-
std::process::exit(0);
43-
}
47+
if args.version {
48+
println!("version is {}", get_version());
49+
std::process::exit(0);
50+
}
4451

45-
let cfg = LocalProverConfig::from_file(args.config_file)?;
46-
let sdk_config = cfg.sdk_config.clone();
47-
let mut prover_types = vec![];
48-
sdk_config
49-
.prover
50-
.circuit_types
51-
.iter()
52-
.for_each(|circuit_type| {
53-
if let Some(pt) = get_prover_type(*circuit_type) {
54-
if !prover_types.contains(&pt) {
55-
prover_types.push(pt);
52+
let cfg = LocalProverConfig::from_file(args.config_file)?;
53+
let sdk_config = cfg.sdk_config.clone();
54+
let mut prover_types = vec![];
55+
sdk_config
56+
.prover
57+
.circuit_types
58+
.iter()
59+
.for_each(|circuit_type| {
60+
if let Some(pt) = get_prover_type(*circuit_type) {
61+
if !prover_types.contains(&pt) {
62+
prover_types.push(pt);
63+
}
5664
}
57-
}
58-
});
59-
let local_prover = LocalProver::new(cfg, prover_types);
60-
let prover = ProverBuilder::new(sdk_config)
61-
.with_proving_service(Box::new(local_prover))
62-
.build()
63-
.await?;
65+
});
66+
let local_prover = LocalProver::new(cfg, prover_types);
67+
let prover = ProverBuilder::new(sdk_config)
68+
.with_proving_service(Box::new(local_prover))
69+
.build()
70+
.await?;
6471

65-
prover.run().await;
72+
prover.run().await;
6673

67-
Ok(())
74+
Ok(())
75+
})
6876
}

0 commit comments

Comments
 (0)