I just wanted to give crypto_data_hash/3 a try but that causes SWI to crash.
use_module(library(crypto)).
crypto_data_hash(test, Hash, [algorithm(sha1)]).
I'm working on Linux Mint 21.2 Xfce 64bit.
And the following documents the session plus error message:
➜ prolog-freecell-solver git:(two-free-cells) swipl
Welcome to SWI-Prolog (threaded, 64 bits, version 8.4.2)
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).
?- use_module(library(crypto)).
true.
?- crypto_data_hash(test, Hash, [algorithm(sha1)]).
SWI-Prolog [thread 1 (main) at Sun Oct 22 14:17:20 2023]: received fatal signal 11 (segv)
C-stack trace labeled "crash":
[0] PL_advance_hash_table_enum() at ??:? [0x7f78f1af8b6a]
[1] Sdprintf() at ??:? [0x7f78f1afda4d]
[2] PL_changed_cwd() at ??:? [0x7f78f1b03cd7]
[3] __restore_rt() at libc_sigaction.c:? [0x7f78f185d520]
[4] EVP_MAC_up_ref() at ??:? [0x7f78f0402074]
[5] ??() at ??:0 [0x7f78f07606c4]
[6] PL_malloc_atomic() at ??:? [0x7f78f1b0e96d]
[7] PL_unify_blob() at ??:? [0x7f78f1b436c8]
[8] PL_unify_blob() at ??:? [0x7f78f1b4356c]
[9] PL_toplevel() at ??:? [0x7f78f1b5ae6f]
[10] swipl(+0x11a5) [0x55ddbdfe31a5]
[11] __libc_start_call_main() at ./csu/../sysdeps/nptl/libc_start_call_main.h:58 [0x7f78f1844d90]
[12] call_init() at ./csu/../csu/libc-start.c:128 [0x7f78f1844e40]
[13] swipl(+0x10c5) [0x55ddbdfe30c5]
Prolog stack:
[12] crypto:_crypto_hash_context_copy/2 [PC=1 in supervisor]
[11] crypto:crypto_data_context/3 [PC=5 in clause 1]
[10] crypto:crypto_data_hash/3 [PC=13 in clause 1]
[9] $toplevel:toplevel_call/1 [PC=3 in clause 1]
[8] $toplevel:stop_backtrace/1 [PC=4 in clause 1]
[7] $tabling:$wfs_call/2 [PC=17 in clause 1]
[5] $toplevel:$execute_goal2/3 [PC=29 in clause 1]
[3] $toplevel:$query_loop/0 [PC=39 in clause 2]
[2] $toplevel:$runtoplevel/0 [PC=19 in clause 1]
[1] $toplevel:$toplevel/0 [PC=3 in clause 1]
[0] system:$c_call_prolog/0 [PC=0 in top query clause]
Running on_halt hooks with status 139
Killing 12793 with default signal handlers
[1] 12793 segmentation fault (core dumped) swipl
Am I doing something wrong here or is SWI the problem?
I suppose the answer is to use a more recent version (e.g. 9.0.4):
Welcome to SWI-Prolog (threaded, 64 bits, version 9.0.4)
...
?- crypto_data_hash(test, Hash, [algorithm(sha1)]).
Hash = a94a8fe5ccb19ba61c4c0873d391e987982fbbd3.