This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

(long) inconsistency in ld.so


Hi, 

(forgives me if this question is very newbie or off-topic ;)


i wrote a simple example of usage double linked list,
but when run this return this error.

Inconsistency detected by ld.so: dl-fini.c: 50: _dl_fini: Assertion
`_rtld_local._dl_nloaded > 0' failed!


exit of the program:
alessandro@phoenix:estruturasI$ cc d_linked_list.c -o d_linked_list -g
alessandro@phoenix:estruturasI$ ./d_linked_list
add=> 0
add=> 1
add=> 2
add=> 3
add=> 4
add=> 5
add=> 6
add=> 7
add=> 8
add=> 9
 9
 8
 7
 6
 5
 4
 3
 2
 1
Inconsistency detected by ld.so: dl-fini.c: 50: _dl_fini: Assertion
`_rtld_local._dl_nloaded > 0' failed!


source code...

#include <stdio.h>
#include <stdlib.h>

typedef struct _lista
{
    int             info;
    struct _lista  *prev;
    struct _lista  *next;
}              *lista;

lista           getnodo ();
void            add (lista * L, int p, int v);


int
main (void)
{
    lista           l;
    int             i;

    l->next = NULL;
    l->prev = NULL;
    for (i = 0; i < 10; i++)
	{
	    add (&l, 1, i);
	    printf ("\nadd=> %d", l->info);
	}

    while (l->prev)
	{
	    printf ("\n %d", l->info);
	    l = l->prev;
	}
    return 0;
}


/* 
 * p is position of insertion 
 * 1 is a after address of list
 * 0 is a before address of list
 */
void
add (lista * L, int p, int v)
{
    lista           a;

    a = getnodo ();
    a->info = v;
    if (((*L)->prev == NULL) && (p == 0))
	{
	    a->prev = NULL;
	    a->next = *L;
	    (*L)->prev = a;
	}
    else if (((*L)->next == NULL) && (p == 1))
	{
	    a->prev = *L;
	    a->next = NULL;
	    (*L)->next = a;
	}
    else if (((*L)->prev != NULL) && (p == 0))
	{
	    a->prev = (*L)->prev;
	    a->next = *L;
	    (*L)->prev = a;
	    *L = a->prev;
	    (*L)->next = a;
	}
    else if (((*L)->next != NULL) && (p == 1))
	{
	    a->next = (*L)->next;
	    a->prev = *L;
	    (*L)->next = a->next;
	    (*L)->prev = a;
	}
    *L = a;
}

lista
getnodo ()
{
    lista           plista;
    plista = (lista) malloc (sizeof (struct _lista));
    return (plista);
}


best regards!

-- 
 ,= ,-_-. =.  [<o>] Alessandro Madruga Correia     
((_/)o o(\_)) [http://counter.li.org]              Slack User# 342751
 `-'(. .)`-'  GNU/Linux SlackWare 10.0             Kernel 2.4.26
     \_/      "Nao existe patch pra estupidez humana."


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]