2016-09-12 2 views
0

Ich habe versucht, kv_t zu verwenden, um einige Daten ohne Erfolg zu speichern. Ich habe auch versucht, die Beispiele forum.c & kv.c. forum.c hängt beim Versuch, den zweiten Forum-Thread zu erstellen, während kv.c abstürzt.s.kv_do Infine-Schleife, wenn kv mehr als 1 Element hat

Wenn ich 1 Element zum KV hinzugefügt habe, wird kv_do erfolgreich sein. Nach dem Hinzufügen des zweiten Elements führt der Versuch, kv_do aufzurufen, zu einer Endlosschleife, und die Daten scheinen auch nicht gültig zu sein.

#include "stdio.h" 
int list_threads(kv_item *item, xbuf_t *reply) 
{ 
    Thread *thread = (Thread*)item->val; 

    xbuf_t thread_li; 
    xbuf_init(&thread_li); 

    //using sprintf-like formatting 
    xbuf_xcat(&thread_li, 
    "<li>" 
    "<a href='/?forum_simple/act=t/id=%llu'>%s</a> (%lu)" 
    "</li>", 
    thread->id, thread->title.ptr, thread->posts.nbr_items 
); 

    char *pos = (char*)xbuf_findstr(reply, "<!--tpl-->"); 
    if (pos) xbuf_insert(reply, pos, thread_li.len, thread_li.ptr); 
    printf("-----------listing threads------\n"); 
    xbuf_free(&thread_li); 

    return 1; 
} 

Der obige Code stammt von forum.c. versuchen nach dem Erstellen des ersten Forum Thread, versuchen, die zweite zu erstellen, wird hängen, weil die Funktion list_threads, wenn unendlich aufgerufen wird. die --------- Auflistung der Threads ----------- wird auf dem Terminal unendlich gedruckt

Antwort

0

Ein anderer Benutzer vor kurzem gemeldet (siehe "neueste" G-WAN Fragen) Ein Absturz mit kv_do und es scheint eher mit der Implementierung der atomaren Primitive als mit dem kv-Code zu tun zu haben.

Eine Problemumgehung wird ausgegeben, sobald das Problem isoliert wurde.

+0

Wurde dieses Problem bereits behoben @Gil? – Nagi

+0

Nicht in naher Zukunft: Programme unter Linux wurden noch mehr zu einer Hürde als auf Microsoft Windows. Zu dieser Zeit können wir es uns einfach nicht leisten, mit diesen ständigen unnötigen Inkompatibilitäten fertig zu werden. – Gil

+0

Könnten Sie in diesem Fall Ihre Arbeitsumgebung teilen, die garantiert, dass kv_do funktioniert? (Kernel-Version, kann auch gcc-Version sein?) – Nagi

Verwandte Themen