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/

Répondre à