finding a circular dependency

Lars T. Kyllingstad public at kyllingen.NOSPAMnet
Tue Jun 22 02:04:18 PDT 2010


On Mon, 21 Jun 2010 14:51:01 -0400, Steven Schveighoffer wrote:

> I've been trying to get a modified version of std.process to compile
> (with Lars K's changes) for windows, and phobos finally compiled.
> 
> So I built a little test program, compiled it, and I get the following
> error message:
> 
> object.Exception: circular dependency in module std.stdio.
> 
> Great.  How did that happen?  Being that I didn't write std.stdio, only
> modified it slightly (and certainly didn't change any imports), I
> haven't the foggiest where this problem is.  Given that the runtime can
> prove there is a circular dependency, and apparently knows the names of
> the modules, how about showing me the cycle?
> 
> :P
> 
> I do not look forward to tracking this one down...
> 
> -Steve


I think the only places that exception can be thrown are lines 1770 and 
1830 of object.d.  Luckily there are a few debug(PRINTF)printf()s 
nearby.  You could try building druntime with -debug=PRINTF.  When the 
static constructors are run, hopefully you'll see something like

  ...
  module[x] = std.stdio
  ...
  module[y] = module.depending.cyclically.on.stdio
  module[z] = std.stdio
  object.Exception: Cyclic dependency in module std.stdio.

-Lars


More information about the Digitalmars-d mailing list