It is unlikely to be a lifetimes thing; far, far more likely to be a
"normal" infinite recursion. The size of the stack frame of each
function is fixed at compile time, so the way to blow the stack is by
calling a lot of functions deeply, e.g. it's not possible to write a
loop that places more and more objects on the stack (not in safe code,
anyway).
You can get a backtrace by running the test in a conventional debugger,
e.g. `gdb --args ./tester produces_a_move`, then type `run`. When it
hits the abort, gdb will freeze execution and you can run `backtrace` to
see the function call stack, to see what is recursing deeply.
You can make rustc emit debug info which makes gdb far more useful, by
compiling with `-g` or, equivalently, `--debuginfo=2`. (Depending on
your platform, 'lldb' may be better.)
If all else fails, you can fall back to println debugging, e.g.
fn gen_move(&self, ...) -> Move {
println!("calling gen_move");
// ...
}
---
Just glancing over your code, it looks like there's mutual recursion
between Playout::run and McEngine::gen_move:
- McEngine::gen_move calls Playout::run
https://github.com/ujh/iomrascalai/blob/88e09fdd/src/engine/mc/mod.rs#L82
- Playout::run calls Playout::gen_move
https://github.com/ujh/iomrascalai/blob/88e09fdd/src/playout/mod.rs#L42
- Playout::gen_move calls McEngine::gen_move
https://github.com/ujh/iomrascalai/blob/88e09fdd/src/playout/mod.rs#L49
Huon
On 23/07/14 17:42, Urban Hafner wrote:
Hey there,
I'm still quite new to Rust. Until now I was able to fix all my bugs
by writing tests and/or randomly adding lifetime parameters to keep
the compiler happy. Now I've hit my first stack overflow. I assume
it's due to the fact that I've screwed up the lifetimes and the
objects live too long although I'm not even sure about that. Now my
question is: How do I debug this? Is there a way to figure out how
long objects live? Or how would one go about debugging this?
Oh, if you're interested in the failing code:
https://github.com/ujh/iomrascalai/pull/46
Cheers,
Urban
--
Freelancer
Available for hire for Ruby, Ruby on Rails, and JavaScript projects
More at http://urbanhafner.com
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev