silicon-heaven / libshv

GNU Lesser General Public License v3.0
0 stars 12 forks source link

Problem to connect to shvspy #288

Closed robertobucher closed 1 year ago

robertobucher commented 1 year ago

Since a couple of weeks, I can't connect from my generated pysimCoder application to the window of shvspy.

The generated code starts correctly:

bucher@debian:~/ToDo/testSHV$ ./testSHV Socket successfully created. Connected to the server.

but when I try to open the server on the shvspy, I get:

Segmentation fault

This happen with an old version of shvapp/shvspy and with the new versions of these applications. Thus, I think that the problem can be related to the new version of libshv.

fvacek commented 1 year ago

ShvSpy is connecting to shvbroker, please can you send shvbroker log and shvspy log as well.

robertobucher commented 1 year ago

Attached the output on the shell. The log window on the brooker is empty

2023-04-24T17:01:08[clioptions.cpp:387]|I| Checking presence of config file: /home/bucher/sviluppo/GITHUB/pysimCoder/SHV/shvapp/bin/../shvbroker/etc/shv/shvbroker/shvbroker.conf 2023-04-24T17:01:08[clioptions.cpp:389]|I| Reading config file: /home/bucher/sviluppo/GITHUB/pysimCoder/SHV/shvapp/bin/../shvbroker/etc/shv/shvbroker/shvbroker.conf 2023-04-24T17:01:08[main.cpp:77]|I| ====================================================================================== 2023-04-24T17:01:08[main.cpp:78]|I| Starting SHV BROKER server ver: 1.1.8 PID: 17620 2023-04-24T17:01:08[main.cpp:84]|I| 2023-04-24T19:01:08 UTC: 2023-04-24T17:01:08Z 2023-04-24T17:01:08[main.cpp:85]|I| ====================================================================================== 2023-04-24T17:01:08[main.cpp:86]|I| Broker ID: broker.local 2023-04-24T17:01:08[main.cpp:87]|I| Log tresholds: -v rpcmsg:D 2023-04-24T17:01:08[main.cpp:88]|I| Config dir: ../shvbroker/etc/shv/shvbroker 2023-04-24T17:01:08[main.cpp:91]|I| Primary IPv4 address: 192.168.178.109 2023-04-24T17:01:08[main.cpp:92]|I| Primary public IPv4 address: 2023-04-24T17:01:08[main.cpp:93]|I| -------------------------------------------------------------------------------------- 2023-04-24T17:01:08[brokerapp.cpp:286]|I| installing Unix signals handlers 2023-04-24T17:01:08[brokerapp.cpp:301]|I| SIG_TERM handler installed OK 2023-04-24T17:01:08[main.cpp:134]|I| starting main thread event loop 2023-04-24T17:01:08[brokerapp.cpp:365]|I| Reloading config 2023-04-24T17:01:08[aclmanager.cpp:362]|I| Creating ConfigFiles ACL manager 2023-04-24T17:01:08[brokerapp.cpp:390]|I| Starting plain socket server on port 3755 2023-04-24T17:01:08[main.cpp:108]|I| ====================================================================================== 2023-04-24T17:01:08[main.cpp:109]|I| Starting shvspy ver. 1.3.29 PID: 17621 build: Apr 21 2023 08:20:22 2023-04-24T17:01:08[main.cpp:116]|I| 2023-04-24T19:01:08 UTC: 2023-04-24T17:01:08Z 2023-04-24T17:01:08[main.cpp:117]|I| ====================================================================================== 2023-04-24T17:01:08[main.cpp:118]|I| Log tresholds: -v rpcmsg:D 2023-04-24T17:01:08[main.cpp:127]|I| -------------------------------------------------------------------------------------- 2023-04-24T17:01:08[tcpserver.cpp:29]|I| RPC server is listenning on 0.0.0.0:3755 2023-04-24T17:01:08[brokerapp.cpp:405]|I| Starting SSL server on port 37555 2023-04-24T17:01:08[tcpserver.cpp:29]|I| RPC server is listenning on 0.0.0.0:37555 2023-04-24T17:01:09[main.cpp:133]|I| starting main thread event loop 2023-04-24T17:07:20[tcpserver.cpp:53]|I| client connected: 127.0.0.1:55544 @ 3755 2023-04-24T17:07:20[serverconnection.cpp:100]|I| Client hello received from: 127.0.0.1:55544 2023-04-24T17:07:20[serverconnection.cpp:102]|I| sending hello response: 127.0.0.1:55544 2023-04-24T17:07:20[serverconnection.cpp:111]|I| Client login received 2023-04-24T17:07:20[clientconnectiononbroker.cpp:156]|I| connection ID: 1 setting idle watch dog timeout to 360 seconds 2023-04-24T17:07:20[serverconnection.cpp:148]|I| login - user: admin 2023-04-24T17:07:20[serverconnection.cpp:165]|I| Client logged in user: admin from: 127.0.0.1:55544 2023-04-24T17:07:20[brokerapp.cpp:804]|I| Client login connection id: 1 2023-04-24T17:07:20[clientshvnode.cpp:15]|I| Creating client node: 0x55b221b00f10 app connection: 1 2023-04-24T17:07:20[clientshvnode.cpp:15]|I| Creating client node: 0x55b221affb10 connection: 1 2023-04-24T17:07:20[brokerapp.cpp:863]|I| client connection id: 1 device id: "untitled" mounted on: test/untitled 2023-04-24T17:07:25[clientconnection.cpp:141]|I| Default RPC timeout set to: 5000 msec. 2023-04-24T17:07:25[clientconnection.cpp:324]|I| connecting to: tcp://localhost:3755 2023-04-24T17:07:25[clientconnection.cpp:223]|I| Starting check-connected timer, interval: 10 sec. 2023-04-24T17:07:250[clientconnection.cpp;:33702]m17:07:25;3;|I|3 31 Socket connected to RPC serverm[ tcpserver.cpp:53]62023-04-24T17:07:250|I|;3 3client connected: 127.0.0.1:37990 @ 3755m[ clientconnection.cpp:371]|I| peer: 127.0.0.1 port: 3755 2023-04-24T17:07:25[serverconnection.cpp:100]|I| Client hello received from: 127.0.0.1:37990 2023-04-24T17:07:25[serverconnection.cpp:102]|I| sending hello response: 127.0.0.1:37990 2023-04-24T17:07:25[serverconnection.cpp:111]|I| Client login received 2023-04-24T17:07:25[clientconnectiononbroker.cpp:156]|I| connection ID: 2 setting idle watch dog timeout to 180 seconds 2023-04-24T17:07:25[serverconnection.cpp:148]|I| login - user: admin 2023-04-24T17:07:25[serverconnection.cpp:165]|I| Client logged in user: admin from: 127.0.0.1:37990 2023-04-24T17:07:25[brokerapp.cpp:804]|I| Client login connection id: 2 2023-04-24T17:07:25[clientshvnode.cpp:15]|I| Creating client node: 0x55b221af4b40 app connection: 2 2023-04-24T17:07:25[clientconnection.cpp:333]|I| Connected to broker client id: 2 2023-04-24T17:07:25[clientconnection.cpp:336]|I| Creating heart-beat timer, interval: 60 sec. 2023-04-24T17:07:33[shvbrokernodeitem.cpp:55]|W| RPC request timeout expired for node: test/untitled 2023-04-24T17:07:38[shvbrokernodeitem.cpp:55]|W| RPC request timeout expired for node: test/untitled

robertobucher commented 1 year ago

I've started the shvapp and the brooker on separate shells using a command line:

Il the shell of the shvapp I get the following:

2023-04-25T08:46:02[clioptions.cpp:387]|I| Checking presence of config file: /home/bucher/sviluppo/GITHUB/pysimCoder/SHV/shvapp/bin/../shvbroker/etc/shv/shvbroker/shvbroker.conf 2023-04-25T08:46:02[clioptions.cpp:389]|I| Reading config file: /home/bucher/sviluppo/GITHUB/pysimCoder/SHV/shvapp/bin/../shvbroker/etc/shv/shvbroker/shvbroker.conf 2023-04-25T08:46:02[main.cpp:77]|I| ====================================================================================== 2023-04-25T08:46:02[main.cpp:78]|I| Starting SHV BROKER server ver: 1.1.8 PID: 4915 2023-04-25T08:46:02[main.cpp:84]|I| 2023-04-25T10:46:02 UTC: 2023-04-25T08:46:02Z 2023-04-25T08:46:02[main.cpp:85]|I| ====================================================================================== 2023-04-25T08:46:02[main.cpp:86]|I| Broker ID: broker.local 2023-04-25T08:46:02[main.cpp:87]|I| Log tresholds: -v rpcmsg:D 2023-04-25T08:46:02[main.cpp:88]|I| Config dir: ../shvbroker/etc/shv/shvbroker 2023-04-25T08:46:02[main.cpp:91]|I| Primary IPv4 address: 10.11.74.105 2023-04-25T08:46:02[main.cpp:92]|I| Primary public IPv4 address: 2023-04-25T08:46:02[main.cpp:93]|I| -------------------------------------------------------------------------------------- 2023-04-25T08:46:02[brokerapp.cpp:286]|I| installing Unix signals handlers 2023-04-25T08:46:02[brokerapp.cpp:301]|I| SIG_TERM handler installed OK 2023-04-25T08:46:02[main.cpp:134]|I| starting main thread event loop 2023-04-25T08:46:02[brokerapp.cpp:365]|I| Reloading config 2023-04-25T08:46:02[aclmanager.cpp:362]|I| Creating ConfigFiles ACL manager 2023-04-25T08:46:02[brokerapp.cpp:390]|I| Starting plain socket server on port 3755 2023-04-25T08:46:02[tcpserver.cpp:29]|I| RPC server is listenning on 0.0.0.0:3755 2023-04-25T08:46:02[brokerapp.cpp:405]|I| Starting SSL server on port 37555 2023-04-25T08:46:02[tcpserver.cpp:29]|I| RPC server is listenning on 0.0.0.0:37555

2023-04-25T08:46:20[tcpserver.cpp:53]|I| client connected: 127.0.0.1:38072 @ 3755 2023-04-25T08:46:20[serverconnection.cpp:100]|I| Client hello received from: 127.0.0.1:38072 2023-04-25T08:46:20[serverconnection.cpp:102]|I| sending hello response: 127.0.0.1:38072 2023-04-25T08:46:20[serverconnection.cpp:111]|I| Client login received 2023-04-25T08:46:20[clientconnectiononbroker.cpp:156]|I| connection ID: 1 setting idle watch dog timeout to 360 seconds 2023-04-25T08:46:20[serverconnection.cpp:148]|I| login - user: admin 2023-04-25T08:46:20[serverconnection.cpp:165]|I| Client logged in user: admin from: 127.0.0.1:38072 2023-04-25T08:46:20[brokerapp.cpp:804]|I| Client login connection id: 1 2023-04-25T08:46:20[clientshvnode.cpp:15]|I| Creating client node: 0x559e84ed9ac0 app connection: 1 2023-04-25T08:46:20[clientshvnode.cpp:15]|I| Creating client node: 0x559e84ed8740 connection: 1 2023-04-25T08:46:20[brokerapp.cpp:863]|I| client connection id: 1 device id: "untitled" mounted on: test/untitled 2023-04-25T08:46:27[tcpserver.cpp:53]|I| client connected: 127.0.0.1:59802 @ 3755 2023-04-25T08:46:27[serverconnection.cpp:100]|I| Client hello received from: 127.0.0.1:59802 2023-04-25T08:46:27[serverconnection.cpp:102]|I| sending hello response: 127.0.0.1:59802 2023-04-25T08:46:27[serverconnection.cpp:111]|I| Client login received 2023-04-25T08:46:27[clientconnectiononbroker.cpp:156]|I| connection ID: 2 setting idle watch dog timeout to 180 seconds 2023-04-25T08:46:27[serverconnection.cpp:148]|I| login - user: admin 2023-04-25T08:46:27[serverconnection.cpp:165]|I| Client logged in user: admin from: 127.0.0.1:59802 2023-04-25T08:46:27[brokerapp.cpp:804]|I| Client login connection id: 2 2023-04-25T08:46:27[clientshvnode.cpp:15]|I| Creating client node: 0x559e84ecd770 app connection: 2

In the shell of the brroker I get:

2023-04-25T08:46:07[main.cpp:108]|I| ====================================================================================== 2023-04-25T08:46:07[main.cpp:109]|I| Starting shvspy ver. 1.3.29 PID: 4917 build: Apr 21 2023 08:20:22 2023-04-25T08:46:07[main.cpp:116]|I| 2023-04-25T10:46:07 UTC: 2023-04-25T08:46:07Z 2023-04-25T08:46:07[main.cpp:117]|I| ====================================================================================== 2023-04-25T08:46:07[main.cpp:118]|I| Log tresholds: -v rpcmsg:D 2023-04-25T08:46:07[main.cpp:127]|I| -------------------------------------------------------------------------------------- 2023-04-25T08:46:07[main.cpp:133]|I| starting main thread event loop

2023-04-25T08:46:27[clientconnection.cpp:141]|I| Default RPC timeout set to: 5000 msec. 2023-04-25T08:46:27[clientconnection.cpp:324]|I| connecting to: tcp://localhost:3755 2023-04-25T08:46:27[clientconnection.cpp:223]|I| Starting check-connected timer, interval: 10 sec. 2023-04-25T08:46:27[clientconnection.cpp:370]|I| 1 Socket connected to RPC server 2023-04-25T08:46:27[clientconnection.cpp:371]|I| peer: 127.0.0.1 port: 3755 2023-04-25T08:46:27[clientconnection.cpp:333]|I| Connected to broker client id: 2 2023-04-25T08:46:27[clientconnection.cpp:336]|I| Creating heart-beat timer, interval: 60 sec. 2023-04-25T08:46:52[shvbrokernodeitem.cpp:55]|W| RPC request timeout expired for node: test/untitled

fvacek commented 1 year ago

I cannot see any segfault in logs attached. Do you mean segfault shvspy after RPC request timeout expired for node: test/untitled? I need some clue, how to reproduce this issue.

robertobucher commented 1 year ago

As soon as I open the "test" tree to get the child "untitled", the applications compiled with libshv goes in "Segmentation fault"

The application testSHV starts correctly, and gives the following output:

Socket successfully created. Connected to the server.

But at the moment that I open the tree, I receive a "Segmentation faul". The two apps "shvbroker" and "ahvspy" continue to work without any message...

Screenshot_2023-04-25_14-51-15

robertobucher commented 1 year ago

This is the code of the functions connected to the brooker and to the shvspy:

include

include

include

define CONF_SHV_USED 1

ifdef CONF_SHV_USED

include

include

include

include

include <ulut/ul_utdefs.h>

define CONF_SHV_TREE_TYPE 0

undef CONF_SHV_TREE_STATIC

endif / CONF_SHV_USED /

/ SHV related function and structres /

ifdef CONF_SHV_USED

shv_con_ctx_t shv_tree_init(python_block_name_map block_map, const shv_node_t static_root, int mode); void shv_tree_end(shv_con_ctx_t ctx, int mode);

python_block_name_map block_name_map_testSHV; python_block_name_entry block_name_entry_testSHV[4]; static shv_con_ctx_t *testSHV_ctx;

endif / CONF_SHV_USED /

/ Function prototypes /

void scope(int Flag, python_block block); void integral(int Flag, python_block block); void mxmult(int Flag, python_block block); void sinus(int Flag, python_block block);

double testSHV_get_tsamp(void) { return (0.01); }

python_block block_testSHV[4];

static double realPar_0[] = {1, 1, 0, 0, 0}; static char realParNames_0[] = {"Amplitude", "Freq [Hz]", "Phase", "Bias", "Delay"}; static int nx_0[] = {0, 0}; static double realPar_1[] = {0.0, 0.0}; static char realParNames_1[] = {"double0", "double1"}; static int nx_1[] = {1, 0}; static double realPar_2[] = {1}; static char realParNames_2[] = {"Gains"}; static int intPar_2[] = {1, 1}; static char intParNames_2[] = {"int0", "int1"}; static int nx_2[] = {0, 0}; static int intPar_3[] = {1, 0}; static char *intParNames_3[] = {"int0", "int1"}; static int nx_3[] = {0, 0};

/ Nodes / static double Node_1[] = {0.0}; static double Node_2[] = {0.0}; static double Node_3[] = {0.0};

/ Input and outputs / static void outptr_0[] = {&Node_1}; static void inptr_1[] = {&Node_3}; static void outptr_1[] = {&Node_2}; static void inptr_2[] = {&Node_1}; static void outptr_2[] = {&Node_3}; static void inptr_3[] = {&Node_3,&Node_2};

/ Initialization function /

void testSHV_init(void) {

/ Block definition /

block_testSHV[0].nin = 0; block_testSHV[0].nout = 1; block_testSHV[0].nx = nx_0; block_testSHV[0].u = NULL; block_testSHV[0].y = outptr_0; block_testSHV[0].realPar = realPar_0; block_testSHV[0].realParNum = 5; block_testSHV[0].realParNames = realParNames_0; block_testSHV[0].intPar = NULL; block_testSHV[0].intParNum = 0; block_testSHV[0].intParNames = NULL; block_testSHV[0].str = ""; block_testSHV[0].ptrPar = NULL;

block_testSHV[1].nin = 1; block_testSHV[1].nout = 1; block_testSHV[1].nx = nx_1; block_testSHV[1].u = inptr_1; block_testSHV[1].y = outptr_1; block_testSHV[1].realPar = realPar_1; block_testSHV[1].realParNum = 2; block_testSHV[1].realParNames = realParNames_1; block_testSHV[1].intPar = NULL; block_testSHV[1].intParNum = 0; block_testSHV[1].intParNames = NULL; block_testSHV[1].str = ""; block_testSHV[1].ptrPar = NULL;

block_testSHV[2].nin = 1; block_testSHV[2].nout = 1; block_testSHV[2].nx = nx_2; block_testSHV[2].u = inptr_2; block_testSHV[2].y = outptr_2; block_testSHV[2].realPar = realPar_2; block_testSHV[2].realParNum = 1; block_testSHV[2].realParNames = realParNames_2; block_testSHV[2].intPar = intPar_2; block_testSHV[2].intParNum = 2; block_testSHV[2].intParNames = intParNames_2; block_testSHV[2].str = ""; block_testSHV[2].ptrPar = NULL;

block_testSHV[3].nin = 2; block_testSHV[3].nout = 0; block_testSHV[3].nx = nx_3; block_testSHV[3].u = inptr_3; block_testSHV[3].y = NULL; block_testSHV[3].realPar = NULL; block_testSHV[3].realParNum = 0; block_testSHV[3].realParNames = NULL; block_testSHV[3].intPar = intPar_3; block_testSHV[3].intParNum = 2; block_testSHV[3].intParNames = intParNames_3; block_testSHV[3].str = ""; block_testSHV[3].ptrPar = NULL;

ifdef CONF_SHV_USED

setenv("SHV_BROKER_IP", "127.0.0.1", 0); setenv("SHV_BROKER_PORT", "3755", 0); setenv("SHV_BROKER_USER", "admin", 0); setenv("SHV_BROKER_PASSWORD", "admin!123", 0); setenv("SHV_BROKER_DEV_ID", "untitled", 0); setenv("SHV_BROKER_MOUNT", "test/untitled", 0);

/ SHV structures definition /

block_name_entry_testSHV[0].block_name = "Gain"; block_name_entry_testSHV[0].block_idx = 2; block_name_entry_testSHV[0].system_inputs = 0; block_name_entry_testSHV[0].system_outputs = 0; block_name_entry_testSHV[1].block_name = "Integral"; block_name_entry_testSHV[1].block_idx = 1; block_name_entry_testSHV[1].system_inputs = 0; block_name_entry_testSHV[1].system_outputs = 0; block_name_entry_testSHV[2].block_name = "RT_Plot"; block_name_entry_testSHV[2].block_idx = 3; block_name_entry_testSHV[2].system_inputs = 0; block_name_entry_testSHV[2].system_outputs = 0; block_name_entry_testSHV[3].block_name = "Sine_wave"; block_name_entry_testSHV[3].block_idx = 0; block_name_entry_testSHV[3].system_inputs = 0; block_name_entry_testSHV[3].system_outputs = 0;

block_name_map_testSHV.blocks_count = 4; block_name_map_testSHV.blocks = block_name_entry_testSHV; block_name_map_testSHV.block_structure = block_testSHV;

/ Call shv_tree_init() to initialize SHV tree /

const shv_node_t shv_tree_root = {};

testSHV_ctx = shv_tree_init(&block_name_map_testSHV, &shv_tree_root, CONF_SHV_TREE_TYPE);

endif / CONF_SHV_USED /

/ Set initial outputs /

sinus(CG_INIT, &block_testSHV[0]); integral(CG_INIT, &block_testSHV[1]); mxmult(CG_INIT, &block_testSHV[2]); scope(CG_INIT, &block_testSHV[3]); }

/ ISR function /

void testSHV_isr(double t) { int i; double h;

sinus(CG_OUT, &block_testSHV[0]); integral(CG_OUT, &block_testSHV[1]); mxmult(CG_OUT, &block_testSHV[2]); scope(CG_OUT, &block_testSHV[3]);

h = testSHV_get_tsamp()/10;

block_testSHV[1].realPar[0] = h; for(i=0;i<10;i++){ integral(CG_OUT, &block_testSHV[1]); integral(CG_STUPD, &block_testSHV[1]); } } / Termination function /

void testSHV_end(void) {

ifdef CONF_SHV_USED

shv_tree_end(testSHV_ctx, CONF_SHV_TREE_TYPE);

endif / CONF_SHV_USED /

sinus(CG_END, &block_testSHV[0]); integral(CG_END, &block_testSHV[1]); mxmult(CG_END, &block_testSHV[2]); scope(CG_END, &block_testSHV[3]); }

fvacek commented 1 year ago

If I understand correctly, it is your testing app, which is seg-faulting? Can you run it in debugger and send me stack trace?

robertobucher commented 1 year ago

Sorry for delay! I've finally found some time to do a debug of the code.

This is the output:

(gdb) r Starting program: /home/bucher/ToDo/testSHV/testSHV [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7ffff7cda6c0 (LWP 172690)] Socket successfully created. Connected to the server. [New Thread 0x7ffff74d96c0 (LWP 172691)] [Detaching after fork from child process 172692]

Thread 3 "testSHV" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff74d96c0 (LWP 172691)] 0x000055555555b1c1 in shv_node_process (shv_ctx=0x7ffff0002040, rid=6, met=0x7ffff74d8e70 "ls", path=0x7ffff74d8e30 "") at /home/bucher/CACSD/pysimCoder/CodeGen/Common/shv/shv_tree.c:353 353 const shv_method_des_t *met_des = shv_dmap_find(item->dir, &met); (gdb)

On monday I'll try to find out more info

robertobucher commented 1 year ago

This is the full stack when I enter in the procedure that gives the causes the "segmentation fault":

(gdb) where full

0 shv_node_process (shv_ctx=0x7ffff0002240, rid=7, met=0x7ffff74d8e70 "ls",

path=0x7ffff74d8e30 "")
at /home/bucher/CACSD/pysimCoder/CodeGen/Common/shv/shv_tree.c:342
    item = 0xf00022a8
    met_des = 0x7ffff00022a8

1 0x000055555555d1c4 in shv_process_input (shv_ctx=0x7ffff0002240)

at /home/bucher/CACSD/pysimCoder/CodeGen/Common/shv/shv_com.c:637
    i = 77
    j = 7
    met = "ls\000\000\000\000\000\000\001\000\000\000\377\177\000"
    path = '\000' <repeats 56 times>, "\023\240\335\367\377\177\000"
    ctx = 0x7ffff00022a8

2 0x000055555555d266 in shv_process (p=0x7ffff0002240)

at /home/bucher/CACSD/pysimCoder/CodeGen/Common/shv/shv_com.c:687
    num_events = 1
    ret = 0
    shv_ctx = 0x7ffff0002240
    pfds = {{fd = 3, events = 1, revents = 1}}

3 0x00007ffff7d66fd4 in start_thread (arg=)

at ./nptl/pthread_create.c:442
    ret = <optimized out>
    pd = <optimized out>
    out = <optimized out>

--Type for more, q to quit, c to continue without paging--

    unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737342445248, 
            7937267704047154710, -128, 0, 140737350835024, 
            140737334054912, -7937250782378117610, -7937249918114384362}, 
          mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, 
        data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
    not_first_call = <optimized out>

4 0x00007ffff7de75bc in clone3 ()

at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

No locals. (gdb)

fvacek commented 1 year ago

I'm afraid that we cannot fix bugs in your testing code, only bugs in our code. If your testing app can be easily build on my box, I can try to reproduce seg-fault on my own.

michallenc commented 1 year ago

@robertobucher Just an idea: do you have subsystems in your block diagram? I personally have never tested them with SHV so it may be possible that some error occurs there (most likely in naming).

robertobucher commented 1 year ago

Not in my examples that didn't work...

I've isolated the function that creates the segfault, but I can't understand why!

Ciao

Roberto

On 5/22/23 16:02, Michal Lenc wrote:

@robertobucher https://github.com/robertobucher Just an idea: do you have subsystems in your block diagram? I personally have never tested them with SHV so it may be possible that some error occurs there (most likely in naming).

— Reply to this email directly, view it on GitHub https://github.com/silicon-heaven/libshv/issues/288#issuecomment-1557276753, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB7WD7XN4VATV3M662XUQUTXHNWVRANCNFSM6AAAAAAXJ3FFGE. You are receiving this because you were mentioned.Web Bug from https://github.com/notifications/beacon/AB7WD7WQ65O67CCMMPTDZCDXHNWVRA5CNFSM6AAAAAAXJ3FFGGWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTS42IUFC.gifMessage ID: @.***>

robertobucher commented 1 year ago

The problem is in the files pysimCoder/CodeGen/Common/shv, in particular the file "shv_tree.c": there is a call (line 353) to

 const shv_method_des_t *met_des = shv_dmap_find(item->dir, &met);

and this call causes the "segmentation fault".

I can't find this function: the debugger point to this line in include/shv_tree.h

GSA_CUST_DEC(shv_dmap, shv_dmap_t, shv_method_des_t, shv_method_des_key_t,     methods, name, shv_method_des_comp_func)

and from here I can't continue to debug the application...

Roberto

On 5/22/23 16:02, Michal Lenc wrote:

@robertobucher https://github.com/robertobucher Just an idea: do you have subsystems in your block diagram? I personally have never tested them with SHV so it may be possible that some error occurs there (most likely in naming).

— Reply to this email directly, view it on GitHub https://github.com/silicon-heaven/libshv/issues/288#issuecomment-1557276753, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB7WD7XN4VATV3M662XUQUTXHNWVRANCNFSM6AAAAAAXJ3FFGE. You are receiving this because you were mentioned.Web Bug from https://github.com/notifications/beacon/AB7WD7WQ65O67CCMMPTDZCDXHNWVRA5CNFSM6AAAAAAXJ3FFGGWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTS42IUFC.gifMessage ID: @.***>

robertobucher commented 1 year ago

I probably found the problem. By compiling the devices in pysimCoder (for example for LinuxRT) with SHV=1, the system doesn't find the file

pack_double.c

which is in the folder "proof_of_concept-code" under libshv/libshvchainpack/c/

Moving this file under libshv/libshvchainpack/c/ solves the problem.

Probably we have to modify the Makefiles for the devices that uses SHV

fvacek commented 1 year ago

Yes, pack_double.c is not used in libshv, thus it was removed from build, please update also your Makefile.

robertobucher commented 1 year ago

Thanks. I've eliminated the pack_double,c file in the compilation and all is working perfect again!