Steve_BZ has asked for the wisdom of the Perl Monks concerning the following question:
Hi Monks,
I'm having some unexpected errors with YASWI http://search.cpan.org/~salva/Language-Prolog-Yaswi-0.18/Yaswi.pm. When I call YASWI with a Perl Module, exit that module, and then navigate into another module, I get:
[PROLOG SYSTEM ERROR: Thread 1 Recursively received fatal signal 11 PROLOG STACK: ] [pid=2788] Action? a
On Googling this error there are a number of sites which recommend including the line:
swi_init('-nosignals');So I include this, or even the more comprehensive:
swi_init("pl", "-g", "true", "-nosignals");And to both, I get:
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.6.64) Copyright (c) 1990-2008 University of Amsterdam. SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Please visit http://www.swi-prolog.org for details. For help, use ?- help(Topic). or ?- apropos(Word). % /home/steve/Documents/i_prolog.pl compiled 0.00 sec, 30,056 bytes SWI-Prolog engine already initialised at /usr/local/lib/perl/5.10.0/La +nguage/Prolog/Yaswi/Low.pm line 63.
My calling code looks like this:
#!/usr/bin/perl -w use strict; package i_observation; use Wx 0.15 qw[:allclasses]; use strict; use warnings; use Wx qw[:everything]; use Wx::Event qw( EVT_MENU ); use base qw(Wx::Frame); use Carp qw(croak); use threads (); # Used for mult +i-tasking ffmpeg use Threads; # Used in Timer to + determine state of tasks use base qw(Wx::Panel Class::Accessor::Fast); use base qw(Wx::PlComboPopup); __PACKAGE__->mk_ro_accessors( qw(html_help chm_help comboctrl) ); use Wx::Locale( gettext => 't'); use Language::Prolog::Yaswi qw(:load :run :query); use Language::Prolog::Types::overload; use Language::Prolog::Sugar functors => {location_organ => 'location_organ', location_segment => 'location_segment', listsegments => 'listsegments', listwalls => 'listwalls', diagnosis => 'diagnosis' }, chains => { orn => ';', andn => ',', add => '+' }, vars => [qw (X Y Z)]; . . . # other routines in the package . . . sub set_location_list{ . . . . my @files = (t("/home/steve/Documents/i_prolog.pl")); swi_init("pl", "-g", "true", "-nosignals"); # Or swi_init("-nosign +als"); swi_consult @files; . . . }
I've also tried
swi_cleanup();After every Prolog call. In the hope that it would close down the prolog engine and therefore remove the problem. To no avail, in fact it gives me another error.
Use of uninitialized value in subroutine entry at i_observation.pm line 511.While not resolving the initial problem.
Any insight would be invaluable.
Regards
Steve
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: YASWI "Prolog System Error: Thread 1"
by salva (Canon) on Jan 19, 2010 at 14:10 UTC | |
by Steve_BZ (Chaplain) on Jan 19, 2010 at 15:02 UTC | |
by salva (Canon) on Jan 19, 2010 at 15:29 UTC | |
by Steve_BZ (Chaplain) on Jan 20, 2010 at 14:42 UTC | |
by salva (Canon) on Jan 20, 2010 at 15:21 UTC | |
by Steve_BZ (Chaplain) on Jan 21, 2010 at 11:57 UTC | |
by salva (Canon) on Jan 21, 2010 at 13:14 UTC | |
|