users-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gprolog blows on OSX with segmentation violation (bad address: 0x0)


From: Sean Charles
Subject: gprolog blows on OSX with segmentation violation (bad address: 0x0)
Date: Sun, 17 Nov 2013 15:00:15 +0000

Hi, 

I was refactoring some code for a Redis client I am writing (INFO, KEYS and SET/GET currently working) and I managed to do something that made gprolog blow. It happens every time with this code:

gpredis_exec(Req) :-
Req =.. [Cmd|Args],
format('Command: ~a~n', [Cmd]),
format('   Args: ~w~n', [Args]),
gpredis_cmdargs(Args, Args2),
flatten(Args2, Args3),
format('Flatted: ~s~n', [Args3]).

gpredis_cmdargs([], []).
gpredis_cmdargs([Arg|Args], [Term|Output]) :-
gpredis_stringify(Arg,X),
format_to_codes(Term, 'term: ~w ', [X]),
gpredis_cmdargs(Args, Output).

gpredis_stringify(X,Y) :- is_list(X), format_to_codes(Y, '~s~', [X]).
gpredis_stringify(X,Y) :- format_to_codes(Y, '~w', [X]).

and the session:
Seans-iMac:gprolog-redis seancharles$ gprolog
GNU Prolog 1.4.4 (64 bits)
Compiled Oct 13 2013, 17:19:55 with cc
By Daniel Diaz
Copyright (C) 1999-2013 Daniel Diaz
| ?- [exec].
compiling /Users/seancharles/Documents/github/gprolog-redis/exec.pl for byte code...
/Users/seancharles/Documents/github/gprolog-redis/exec.pl compiled, 17 lines read - 2455 bytes written, 4 ms

(1 ms) yes
| ?- gpredis_exec(test(100,'tonne',"century")).
Command: test
   Args: [100,tonne,[99,101,110,116,117,114,121]]

Fatal Error: Segmentation Violation (bad address: 0x0)

and my machine:
Darwin Seans-iMac.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64
Presumably that 0x0 is a null pointer somewhere!

I don’t have the capabilities to debug this level of problem, sorry but at least if/when this is fixed GNU Prolog will be all the better for a bit more Nietzsche-fication!

Thanks again,
Sean.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]