<div dir="ltr">Hey Huon,<div><br></div><div>thanks for the help. The problem is really obvious now that you mention it! Thanks for the debugging tips however. Coming from Ruby all I ever use are print statements. So it's good to know how to do it!</div>
<div><br></div><div>Urban</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jul 23, 2014 at 10:02 AM, Huon Wilson <span dir="ltr"><<a href="mailto:dbau.pp@gmail.com" target="_blank">dbau.pp@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <div>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).<br>
      <br>
      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.<br>
      <br>
      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.)<br>
      <br>
      <br>
      If all else fails, you can fall back to println debugging, e.g.<br>
      <br>
          fn gen_move(&self, ...) -> Move {<br>
              println!("calling gen_move");<br>
      <br>
              // ...<br>
          }<br>
      <br>
      ---<br>
      <br>
      Just glancing over your code, it looks like there's mutual
      recursion between Playout::run and McEngine::gen_move:<br>
      <br>
      - McEngine::gen_move calls Playout::run
<a href="https://github.com/ujh/iomrascalai/blob/88e09fdd/src/engine/mc/mod.rs#L82" target="_blank">https://github.com/ujh/iomrascalai/blob/88e09fdd/src/engine/mc/mod.rs#L82</a><br>
      - Playout::run calls Playout::gen_move
      <a href="https://github.com/ujh/iomrascalai/blob/88e09fdd/src/playout/mod.rs#L42" target="_blank">https://github.com/ujh/iomrascalai/blob/88e09fdd/src/playout/mod.rs#L42</a><br>
      - Playout::gen_move calls McEngine::gen_move
      <a href="https://github.com/ujh/iomrascalai/blob/88e09fdd/src/playout/mod.rs#L49" target="_blank">https://github.com/ujh/iomrascalai/blob/88e09fdd/src/playout/mod.rs#L49</a><br>
      <br>
      <br>
      Huon<div><div class="h5"><br>
      <br>
      <br>
      On 23/07/14 17:42, Urban Hafner wrote:<br>
    </div></div></div>
    <blockquote type="cite"><div><div class="h5">
      <div dir="ltr">Hey there,
        <div><br>
        </div>
        <div>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?<br clear="all">
          <div><br>
          </div>
          <div>Oh, if you're interested in the failing code: <a href="https://github.com/ujh/iomrascalai/pull/46" target="_blank">https://github.com/ujh/iomrascalai/pull/46</a></div>
          <div><br>
          </div>
          <div>Cheers,</div>
          <div><br>
          </div>
          <div>Urban</div>
          -- <br>
          Freelancer<br>
          <br>
          Available for hire for Ruby, Ruby on Rails, and JavaScript
          projects<br>
          <br>
          More at <a href="http://urbanhafner.com" target="_blank">http://urbanhafner.com</a>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </div></div><pre>_______________________________________________
Rust-dev mailing list
<a href="mailto:Rust-dev@mozilla.org" target="_blank">Rust-dev@mozilla.org</a>
<a href="https://mail.mozilla.org/listinfo/rust-dev" target="_blank">https://mail.mozilla.org/listinfo/rust-dev</a>
</pre>
    </blockquote>
    <br>
  </div>

<br>_______________________________________________<br>
Rust-dev mailing list<br>
<a href="mailto:Rust-dev@mozilla.org">Rust-dev@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/rust-dev" target="_blank">https://mail.mozilla.org/listinfo/rust-dev</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Freelancer<br><br>Available for hire for Ruby, Ruby on Rails, and JavaScript projects<br><br>More at <a href="http://urbanhafner.com" target="_blank">http://urbanhafner.com</a>
</div>