wsnet simulator: falha de segmentação (núcleo despejado) durante a instalação

0

Eu instalei o simulador da wsnet há cerca de um mês e estava tudo bem (eu tive algum problema). Agora eu desinstalei o wsnet (sudo rm –r /usr/local/wsnet.2) Quero instalá-lo novamente e seguir as etapas de instalação na página da web . na etapa 3 quando eu uso make command recebo este erro:

rng.c: In function ‘create_rng’: 
rng.c:164:14: error: variable ‘r’ set but not used [-Werror=unused-but-set-variable] 
cc1: all warnings being treated as errors 
make[3]: *** [wsnet-rng.o] Error 1 
make[3]: Leaving directory '/home/administrator/wsnet/src' 
make[2]: *** [all-recursive] Error 1 
make[2]: Leaving directory '/home/administrator/wsnet/src' 
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory '/home/administrator/wsnet' 
make: *** [all] Error 2 

Devido a esse erro, desative (clear) o sinalizador -Werror nos arquivos configure.ac e digite o comando "make" novamente. Com esse hack, ele funciona e “faz” o acabamento do processo sem nenhum erro. ou eu uso o gcc.4.4.7 e compilo código sem nenhum aviso. Então eu digito outro comando “sudo make install” e ele instala o wsnet em sua localização. AGORA, quando executo todos os arquivos de configuração de simulação, como cbr.xml xy.xml etc., recebo este erro:

...
Entity 'battery' (9) 
using model : energy_linear 
using plugin : /usr/local/wsnet-2.0/lib//libenergy_linear.so 
author : Guillaume Chelius 
version : 0.1 
description : Linearly decreasing battery 

Environment 
using propagation : range 
propagation range : 30.000000 
using interferences : interf 
modulation : none 

Bundle 'sensor' (0) 
worldsens : 0 
mobility : static 
number of entities : 7 
static 
battery 
omnidirectionnal 
up : radio 
radio 
up : mac 
down: omnidirectionnal 
mac 
up : routing 
down: radio 
routing 
up : cbr 
down: mac 
cbr 
down: routing 
***Segmentation fault (core dumped)***

Acho que esse erro ocorre depois que eu atualizei meu sistema operacional (Ubuntu) usando o gerenciador de atualização. Por exemplo, o compilador gcc nesta versão obtém warrings como um erro. quando eu executo este programa com gdb eu recebo este rastreamento:

Program received signal SIGSEGV, Segmentation fault. 
0xb7ee2e5e in gsl_ran_flat () from /usr/lib/libgsl.so.0 
(gdb) bt 
#0 0xb7ee2e5e in gsl_ran_flat () from /usr/lib/libgsl.so.0 
    #1 0x080504c9 in uniform () 
#2 0x0804fd0d in get_random_x_position () 
#3 0xb78e07dc in setnode () 
from /usr/local/wsnet-2.0/lib//libmobility_static.so 
#4 0x08054d9c in parse_nodes () 
#5 0x0804e938 in do_configuration () 
#6 0x0804d827 in main () 

Eu reverto para a versão anterior da biblioteca gsl, gcc (4.4.7), mas isso não resolve o meu problema.

    
por Mohammad Torkashvand 09.09.2013 / 07:19

1 resposta

0

Acho que resolvi o problema.

Você deve alterar o código do arquivo rng.c no diretório /wsnet/src/ .

Você deve colocar este código:

rng->r = r;
    if (seed) {
        rng->seed = seed;
        gsl_rng_set(r, seed);
    } else {
        struct timeval tv;
        gettimeofday(&tv, NULL);
        gsl_rng_set(r, tv.tv_usec + tv.tv_sec);
        rng->seed = tv.tv_usec + tv.tv_sec;
    }

na função create_rng abaixo da condição do comutador e acima do hadas_insert .

Depois de compilar, sem colocar o sinalizador -Werror para limpar.

Funciona para mim e eu não tenho uma "falha de segmentação".

    
por Fadwa 18.09.2013 / 10:43