Follow-up Comment #9, bug #15757 (project make): Hrm. I rechecked the logic (which is somewhat unusual, by necessity) for the variable set list push/pop and it seems correct to me. That means that there may be somewhere else in the code that's resetting these variables. It's very odd that it is so difficult to trigger. There must be _something_ different about this target--or maybe, the target right before this one?!?!
Here's an idea; you could try to narrow down where the problem occurs by adding an assertion at strategic places. You can't use assert() because you need a statement not a condition, but you can add code like: { struct variable_set_list *_p; for (_p = global_setlist->next; _p; _p=_p->next) if (_p == &global_setlist) abort(); } which will kill the program when the loop is detected. You can then add it to various spots (for example variable.c:push_new_variable_scope() and variable.c:pop_variable_scope()). This may (or may not) help you get closer to the point where the real error is introduced. It's possible that turning on debugging might help you trace what's going on and see what targets make is considering around when the loop happens. _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?func=detailitem&item_id=15757> _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ _______________________________________________ Bug-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make