Teszt libsoup app - szegmentálási hiba
2017-10-23T16:29:52+02:00
2017-10-23T18:30:16+02:00
2022-07-19T02:46:09+02:00
*deleted_67298407
Hali,

valamit folyamatosan elszúrok. Egy urlroutert készítek libsoup-al. És a következő hibával elszáll:
[Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Program received signal SIGSEGV, Segmentation fault. 0x00000000004012b2 in url_router_add_handler (router=0x7fffffffe460, signature=0x401884 "/users/:user", handler=0x400f36 <user_cb>, user_data=0x0) at url-router.c:80 80 if (!g_strcmp0(data->key, parts[i])) {

És egyszerűen képtelen vagyok rájönni a hibára.

void url_router_add_handler(UrlRouter *router, const gchar *signature, UrlRouterHandler handler, gpointer user_data) { UrlNodeData *data; gchar **parts; GNode *parent = NULL; GNode *node; guint i; g_return_if_fail(router); g_return_if_fail(signature); g_return_if_fail(*signature == '/'); g_return_if_fail(handler); parent = (GNode *)router; parts = g_strsplit(signature, "/", 0); for (i = 1; parts[i]; i++) { for (node = parent->children; node; node = node->next) { data = node->data; if (!g_strcmp0(data->key, parts[i])) { parent = node; break; } else if ((*data->key == ':') && (*(parts[i]) == ':')) { g_warning("must match names!"); parent = node; break; } } if (!node) { data = url_node_data_new(parts[i], *(parts[i]) == ':', (!parts[i+1]) ? handler : NULL, (!parts[i+1]) ? user_data : NULL); parent = g_node_append_data(parent, data); } } g_strfreev(parts); }
----
url_router_add_handler(router, "/users/:user", user_cb, NULL);

Esetleg valakinek ötlete?
Mutasd a teljes hozzászólást!
Valahol egy függvényt hibásan paraméterezel, például egy pointerben NULL vagy érvénytelen cím van.
Debuggolj (kis segítség gdb-hez itt)
Mutasd a teljes hozzászólást!

abcd