I can reproduce it every time with the following:
$ cat /tmp/s.pl
dbgide :- prolog_ide(debug_monitor).
$ cat /tmp/3.pl
main :-
write(hello).
$ swipl -f /tmp/s.pl /tmp/3.pl
Welcome to SWI-Prolog (threaded, 64 bits, version 8.1.24)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).
?- make.
true.
?- make.
ERROR: /usr/lib/swipl/xpce/prolog/boot/pce_pl.pl:37:
ERROR: '$set_predicate_attribute'/3: No permission to redefine imported_procedure `pce_principal:get/3'
Warning: /usr/lib/swipl/xpce/prolog/boot/pce_pl.pl:37:
Warning: Goal (directive) failed: pce_host:require([send/2,get/3])
% /usr/lib/swipl/xpce/prolog/lib/pce loaded into pce 0.03 sec, 0 clauses
ERROR: /usr/lib/swipl/xpce/prolog/boot/pce_pl.pl:37:
ERROR: '$set_predicate_attribute'/3: No permission to redefine imported_procedure `pce_principal:get/3'
Warning: /usr/lib/swipl/xpce/prolog/boot/pce_pl.pl:37:
Warning: Goal (directive) failed: pce_host:require([send/2,get/3])
% /usr/lib/swipl/xpce/prolog/lib/swi_compatibility compiled into pce_compatibility_layer 0.00 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/boot/pce_principal compiled into pce_principal 0.00 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/boot/pce_global compiled into pce_global 0.00 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/boot/pce_expansion compiled into pce_expansion 0.02 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/boot/pce_realise compiled into pce_realise 0.01 sec, 0 clauses
true.
Interesting things to note:
- It doesn’t happen on the first call to
make
, only on the second
- I didn’t change the source file
3.pl
at all
Now, without an initialization file:
$ swipl -f none /tmp/3.pl
Welcome to SWI-Prolog (threaded, 64 bits, version 8.1.24)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).
?- make.
true.
?- make.
true.
?- make.
true.
?- ^D
% halt
Now changing the file:
$ swipl -f /tmp/s.pl /tmp/3.p
Welcome to SWI-Prolog (threaded, 64 bits, version 8.1.24)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit https://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).
?- make.
true.
?- % here I change the 3.pl file (hello -> hello1)
| make.
% /tmp/3 compiled 0.00 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/lib/pce loaded into pce 0.04 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/lib/swi_compatibility compiled into pce_compatibility_layer 0.00 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/boot/pce_principal compiled into pce_principal 0.01 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/boot/pce_global compiled into pce_global 0.01 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/boot/pce_expansion compiled into pce_expansion 0.03 sec, 0 clauses
% /usr/lib/swipl/xpce/prolog/boot/pce_realise compiled into pce_realise 0.01 sec, 0 clauses
true.
?- shell('cat /tmp/3.pl').
main :-
write(hello1).
true.
?- make.
ERROR: /usr/lib/swipl/xpce/prolog/boot/pce_pl.pl:37:
ERROR: '$set_predicate_attribute'/3: No permission to redefine imported_procedure `pce_principal:get/3'
Warning: /usr/lib/swipl/xpce/prolog/boot/pce_pl.pl:37:
Warning: Goal (directive) failed: pce_host:require([send/2,get/3])
% /usr/lib/swipl/xpce/prolog/lib/pce loaded into pce 0.03 sec, 0 clauses
true.