Bonsoir,
Une demande d'aide, que j'ai postée vers une liste April, mais qui
concerne un logiciel libre sous Debian/Testing/x86-64 (ou Ubuntu 21.04)
-------- Forwarded Message --------
Subject: bogue dlopen croisé dans RefPerSys (commit 8553aeaa8442)
Date: Thu, 29 Jul 2021 21:40:04 +0200
From: Basile Starynkevitch <bas...@starynkevitch.net>
To: techni...@april.org
Bonsoir à tous,
RefPerSys <http://refpersys.org/> est un logiciel libre d'intelligence
artificielle symbolique (sous licence GPLv3+) sous Linux. La
philosophie, c'est /méta-connaissances déclaratives/ (vous lirez avec
profit le livre: /Méta-connaissances, futur de l'Intelligence
Artificielle/ ISBN 2-86601-247-X, Hermès 1997) auto-génération du
système (j'en suis encore loin, mais grâce à d'autres je m'en rapproche...).
Pour les curieux, voir les exposés en
https://afia.asso.fr/journee-hommage-j-pitrat/
<https://afia.asso.fr/journee-hommage-j-pitrat/> et surtout, lire le
dernier livre de Pitrat (en anglais) /Artificial Beings : the Conscience
of a Conscious Machine/ ISBN-13: 978-1848211018. Ce livre se lit bien et
ne nécessite pas de connaissances informatiques poussées.
Le code C++ (actuellement écrit à la main, hélas; je voudrais en générer
davantage) de RefPerSys (commenté en anglais) est en
https://github.com/RefPerSys/RefPerSys
<https://github.com/RefPerSys/RefPerSys>
et ce message concerne le git commit 8553aeaa8442
<https://github.com/RefPerSys/RefPerSys/commit/8553aeaa84429a15d52d961e632210c93dc1f8ae>
L'idée directrice (insuffisamment suivie) est de traduire un formalisme
de règles (systèmes experts) en du code généré C++, actuellement
utilisant Qt5. L'état persistant de RefPerSys est stocké dans des
fichiers textuels (sous persistore/ ...) dans un format inspiré de JSON.
La configuration de RefPerSys est artisanale: un banal Makefile, avec un
fichier inclus $HOME/.refpersys.mk qui contient par exemple
# file ~/.refpersys.mk
RPS_BUILD_CC= /usr/bin/gcc-10
RPS_BUILD_CXX= /usr/bin/g++-10
(on peut remplacer gcc-10 par gcc-11 ou clang-12, etc...)
Après avoir compilé RefPerSys (par un make -j7 refpersys && make all) je
le lance avec ./refpersys --Qt -AGUI,WEB et j'obtiens (depuis un commit
ou deux) systématiquement l'erreur:
rimski.x86_64 ~/RefPerSys 20:53 .0 % ./refpersys --Qt -AGUI,WEB
*** RefPerSys INFORM: main_rps.cc:754: <int main(int, char**)>
!-!-! starting RefPerSys !-!-! ./refpersys process 10298 on host rimski
... gitid 8553aeaa84429a15 built Thu 29 Jul 2021 08:53:24 PM MEST
(main@0x555c2cba177d) interactive mode (3 jobs)
make: Entering directory '/home/basile/RefPerSys'
make: Leaving directory '/home/basile/RefPerSys'
** RefPerSys INFORM! main_rps.cc:586: void rps_check_mtime_files()
rps_check_mtime_files: did make -t -C /home/basile/RefPerSys -q objects
successfully
** RefPerSys INFORM! store_rps.cc:749: void
Rps_Loader::load_all_state_files() loaded 1 space files in second pass
with 196 objects and 0 todos
** RefPerSys INFORM! store_rps.cc:2721: void rps_load_from(const
string&) rps_load_from completed
... from directory /home/basile/RefPerSys with RefPerSys built Thu 29
Jul 2021 08:53:24 PM MEST
lastgitcommit 8553aeaa8442 more code in
RpsTemp_ObjectBrowser::refresh_object_browser - the loop to display
object is incomplete
md5sum 45449edd9382713d22f67e2b8edad88b
loaded 196 objects in 0.004 elapsed, 0.004 cpu seconds
so 22.165 elapsed µs/ob, 22.161 cpu µs/ob, in 7434 memory words.
=============================================================================
*** RefPerSys INFORM: main_rps.cc:1120: <void rps_run_application(int&,
char**)>
rps_run_application: start of ./refpersys
.. gitid 8553aeaa84429a15d52d961e632210c93dc1f8ae+
.. build timestamp Thu 29 Jul 2021 08:53:24 PM MEST
.. last git commit 8553aeaa8442 more code in
RpsTemp_ObjectBrowser::refresh_object_browser - the loop to display
object is incomplete
.. md5sum 45449edd9382713d22f67e2b8edad88b
.. in /home/basile/RefPerSys
.. on host rimski pid 10298
** RefPerSys INFORM! main_rps.cc:1675: bool rps_set_debug_flag(const
string&) setting debugging flag GUI
** RefPerSys INFORM! main_rps.cc:1675: bool rps_set_debug_flag(const
string&) setting debugging flag WEB
*** RefPerSys INFORM: main_rps.cc:1138: <void rps_run_application(int&,
char**)>
rps_run_application did set debug after load to GUI,WEB
** RefPerSys INFORM! main_rps.cc:1206: void rps_run_application(int&,
char**) rps_run_application will do Qt from pid 10298 on rimski so make
tempgui-qrps.so
make: 'tempgui-qrps.so' is up to date.
** RefPerSys FATAL! main_rps.cc:1214:: dlopen tempgui-qrps.so failed :
./tempgui-qrps.so: undefined symbol: _ZN17Rps_PayloadStrBuf12clear_bufferEv
RPS FATAL:
RefPerSys gitid 8553aeaa84429a15d52d961e632210c93dc1f8ae+,
built timestamp Thu 29 Jul 2021 08:53:24 PM MEST,
on host rimski, md5sum 45449edd9382713d22f67e2b8edad88b,
elapsed 0.068, process 0.022 sec
[001] main_rps.cc:1214°: rps_run_application @0x555c2cb9f84b
[002] main_rps.cc:768°: main @0x555c2cba242d
===== end fatal error at main_rps.cc:1214 ======
--------------------------------/ main_rps.cc:1214
zsh: IOT instruction (core dumped) ./refpersys --Qt -AGUI,WEB
Ca fait plusieurs jours que je n'arrive pas à comprendre cette erreur,
et à corriger mon bogue.
Avez vous des idées, une stratégie de déboguage? Je ne suis pas un
expert de /binutils/. Je suis sensé avoir été un expert de GCC.
Librement.
PS. Je cherche aussi des "mécènes", concrètement des partenaires pour
des soumissions ITEA ou HorizonEurope. Le site http://refpersys.org/
<http://refpersys.org/> donne des références possibles d'appels à
projets dans le cadre HorizonEurope, et des futures applications.
NB: je cherche aussi des relecteurs pour un papier en cours de
soumission à ROIA (revue ouverte d'intelligence artificielle). Contactez
moi pour en obtenir le PDF actuel.
--
Basile Starynkevitch<bas...@starynkevitch.net>
(only mine opinions / les opinions sont miennes uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/