nixp.ru v3.0

18 января 2017,
среда,
07:04:24 MSK

DevOps с компанией «Флант»
Antern написал 21 января 2007 года в 04:28 (402 просмотра) Ведет себя как мужчина; открыл 20 тем в форуме, оставил 84 комментария на сайте.

всеобщий_превед.

такая вот проблема.

компилится: gcc source.cpp -o s -lstdc++

./s

Segmentation fault;

код:

#include

#include

/*include defs.h:

#define MAPX 8

#define MAPY 8

#define CITYCOL 8

#define BATLCOL 8

*/

int city[MAPX][MAPY],batl[MAPX][MAPY];

int main(int argv,char *argc[])

{

long int uid;

char login[16],passwd[16];

int mpx=0,mpy=0;

FILE* wmap;

wmap=fopen(«data/city.mp»,«r»);

for(unsigned int mp=0;mp<=CITYCOL;mp++) {

fscanf(wmap,"%d %d»,&mpx,&mpy);

city[mpx][mpy]=1;

};

fclose(wmap);

wmap=fopen(«data/batl.bt»,«r»);

for(unsigned int mp=0;mp<=BATLCOL;mp++) {

fscanf(wmap,"%d %d»,&mpx,&mpy);

batl[mpx][mpy]=1;

};

fclose(wmap);

};

ткните в ошЫбку плиз

Genie

strace ./s

?

Antern

execve(«./s», ["./s"], [/* 81 vars */]) = 0

uname({sys=«Linux», node=«anterny», …}) = 0

brk(0) = 0×804a000

access(«/etc/ld.so.preload», R_OK) = -1 ENOENT (No such file or directory)

open(«/etc/ld.so.cache», O_RDONLY) = 3

fstat64(3, {st_mode=S_IFREG|0644, st_size=142853, …}) = 0

old_mmap(NULL, 142853, PROT_READ, MAP_PRIVATE, 3, 0) = 0×40017000

close(3) = 0

open(«/usr/lib/libstdc++.so.6», O_RDONLY) = 3

read(3, «\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\307»…, 512) = 512

fstat64(3, {st_mode=S_IFREG|0755, st_size=882824, …}) = 0

old_mmap(NULL, 900664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0×4003a000

madvise(0×4003a000, 900664, MADV_SEQUENTIAL|0×1) = 0

old_mmap(0×4010c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd2000) = 0×4010c000

old_mmap(0×40111000, 20024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0×40111000

close(3) = 0

open(«/lib/tls/libc.so.6», O_RDONLY) = 3

read(3, «\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1»…, 512) = 512

fstat64(3, {st_mode=S_IFREG|0755, st_size=1417095, …}) = 0

old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×40116000

old_mmap(NULL, 1174524, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0×40117000

madvise(0×40117000, 1174524, MADV_SEQUENTIAL|0×1) = 0

old_mmap(0×40230000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0×119000) = 0×40230000

old_mmap(0×40234000, 7164, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0×40234000

close(3) = 0

open(«/lib/tls/libm.so.6», O_RDONLY) = 3

read(3, «\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\2203\0»…, 512) = 512

fstat64(3, {st_mode=S_IFREG|0755, st_size=191109, …}) = 0

old_mmap(NULL, 151712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0×40236000

madvise(0×40236000, 151712, MADV_SEQUENTIAL|0×1) = 0

old_mmap(0×4025a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0×23000) = 0×4025a000

close(3) = 0

open(«/lib/libgcc_s.so.1», O_RDONLY) = 3

read(3, «\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\26»…, 512) = 512

fstat64(3, {st_mode=S_IFREG|0755, st_size=44088, …}) = 0

old_mmap(NULL, 43080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0×4025c000

madvise(0×4025c000, 43080, MADV_SEQUENTIAL|0×1) = 0

old_mmap(0×40266000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0×9000) = 0×40266000

close(3) = 0

old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×40267000

mprotect(0×40230000, 4096, PROT_READ) = 0

set_thread_area({entry_number:-1 -> 6, base_addr:0×402676c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0

munmap(0×40017000, 142853) = 0

brk(0) = 0×804a000

brk(0×806b000) = 0×806b000

open(«data/city.mp», O_RDONLY) = -1 ENOENT (No such file or directory)

— SIGSEGV (Segmentation fault) @ 0 (0) —

+++ killed by SIGSEGV +++

Antern

блин =)..

вот тож, только с data/*:

mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×40017000

read(3, «3 3\n2 2», 4096) = 7

read(3, «», 4096) = 0

read(3, «», 4096) = 0

read(3, «», 4096) = 0

read(3, «», 4096) = 0

read(3, «», 4096) = 0

read(3, «», 4096) = 0

read(3, «», 4096) = 0

read(3, «», 4096) = 0

close(3) = 0

munmap(0×40017000, 4096) = 0

— SIGSEGV (Segmentation fault) @ 0 (0) —

+++ killed by SIGSEGV +++

metal

Успешность fopen надо проверять, думаю ты сам уже понял. Ошибка скорее всего в том что данные в файлах не находятся в пределах от 0 до 7, в программе это тоже не проверяется.

Antern

гм.. всё намного прозаичней.. я забыл расширение дописать к файл0 :-)

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.