Debugger cross-referrencing buffer

Hello,

I recently started to use the rdet library more extensively – and when i now try to start the debugger, the debugger window freezes with a message at the bottom of the window: cross-referrencing buffers.

I have never seen this message before, and i must assume that it might be related to rdet.

any thoughts would be much appreciated,

(in the meantime i will try to remove all rdet reference – quite some tedious work)

Dan

Yes.

Removing rdet made the “cross referencing” error go away …

To bad … i like rdet – but, I like debugging windows even more …

Did anyone else encounter this problem?

Dan

It might be a variant of the problem I ran into with tracebacks and re-invoking the compiler, which re-invokes rdet … and in some situations it seems to get into an infinite loop because goal expansion can’t get to a fixed point. I couldn’t make a small example of this – most of the time, it worked fine. A bit more info here: https://groups.google.com/d/msg/swi-prolog/bu_SvV6wKQs/x_l_TSZlHQAJ

I’ve also noticed some situations where rdet appears to not expand goals when it should. I haven’t positively confirmed this (e.g., I might have made a mistake in my rdet declarations, although I can’t see any) and haven’t had time to dig into it deeper.

There are quite a few goal/term expansion cases that you do not want to run for cross referencing and colouring. You can make these conditional on

\+ current_prolog_flag(xref, true).

This most likely still makes rdet kill the graphical debugger, but now showing the decompiled code rather than the source. That can be fixed with some logic to the hooks provided by library(prolog_clause) if my memory serves me well. This isn’t particularly easy to get working.