-
1. Data: 2010-03-22 18:57:08
Temat: Bus error
Od: a...@p...onet.pl
Witam.
Jest taki maly programik.
#include <stdio.h>
#include <stdlib.h>
int pp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main(void)
{
int tab[1000];
int a=0,x;
do
{
scanf("%d",&x);
if(!x)
break;
else
tab[a++]=x;
}while(1);
qsort(tab,a,sizeof(tab),pp);
for(x=0;x<a;x++)
printf("%d ",tab[x]);
putchar('\n');
return 0;
}
po kompilacji na linux Slackware 12.2.0 dostaje cos takiego
np:
dane testowe
1 2 3 0
odp. 1 2 3
albo taka odp.Naruszenie ochrony pamięci
albo jeszcze taka odp. 0 Błąd szyny
Dwie pierwsze odpowiedzi mozna by sie zgodzic bo jest blad w programie w funkcji
qsort
ale ma pytanie do trzeciej odpowiedzi.
Znalazlem definicje ze to jest blad systemowy, ale widzialem tez artykul ze to
moze byc blad sprzetowy czyli naprzyklad jest problem np.: z RAM. Czyli blad
systemowy czy sprzetowy?
Pozdr.
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
2. Data: 2010-03-22 19:14:19
Temat: Re: Bus error
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
a...@p...onet.pl <a...@p...onet.pl> napisał(a):
> Witam.
> Jest taki maly programik.
> #include <stdio.h>
> #include <stdlib.h>
> int pp(const void *a,const void *b)
> {
> return *(int *)a-*(int *)b;
> }
> int main(void)
> {
> int tab[1000];
> int a=0,x;
> do
> {
> scanf("%d",&x);
> if(!x)
> break;
> else
> tab[a++]=x;
> }while(1);
> qsort(tab,a,sizeof(tab),pp);
> for(x=0;x<a;x++)
> printf("%d ",tab[x]);
> putchar('\n');
> return 0;
> }
> po kompilacji na linux Slackware 12.2.0 dostaje cos takiego
> np:
> dane testowe
> 1 2 3 0
> odp. 1 2 3
> albo taka odp.Naruszenie ochrony pamięci
> albo jeszcze taka odp. 0 Błąd szyny
> Dwie pierwsze odpowiedzi mozna by sie zgodzic bo jest blad w programie w
> funkcji qsort
> ale ma pytanie do trzeciej odpowiedzi.
> Znalazlem definicje ze to jest blad systemowy, ale widzialem tez artykul
> ze to moze byc blad sprzetowy czyli naprzyklad jest problem np.: z RAM.
> Czyli blad systemowy czy sprzetowy?
> Pozdr.
Nie przeanalizowałem jeszcze Twojego kodu ale na 99% to w nim jest problem a
nie w Twoim sprzęcie.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 12 days, 21 hours, 32 minutes and 13 seconds
-
3. Data: 2010-03-22 19:26:15
Temat: Re: Bus error
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
>> qsort(tab,a,sizeof(tab),pp);
Poczytaj opis do funkcji qsort. Trzeci parametr to rozmiar elementu a nie
tablicy. Powinno być sizeof(int).
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 12 days, 21 hours, 43 minutes and 4 seconds
-
4. Data: 2010-03-22 19:32:06
Temat: Re: Bus error
Od: a...@p...onet.pl
> >> qsort(tab,a,sizeof(tab),pp);
>
> Poczytaj opis do funkcji qsort. Trzeci parametr to rozmiar elementu a nie
> tablicy. Powinno być sizeof(int).
>
Wszystko sie zgadza. Napisalem ze jest blad w qsort. Ale pierwszy raz sie
spotykam ze przy takim bledzie wyskakuje "Błąd szyny" oto mi chodzilo.
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
5. Data: 2010-03-22 19:40:30
Temat: Re: Bus error
Od: Michoo <m...@v...pl>
a...@p...onet.pl pisze:
> po kompilacji na linux Slackware 12.2.0 dostaje cos takiego
> np:
> dane testowe
>
> 1 2 3 0
>
> odp. 1 2 3
>
> albo taka odp.Naruszenie ochrony pamięci
>
> albo jeszcze taka odp. 0 Błąd szyny
>
System 64bitowy?
http://en.wikipedia.org/wiki/Bus_error
--
Pozdrawiam
Michoo
-
6. Data: 2010-03-22 19:42:21
Temat: Re: Bus error
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
a...@p...onet.pl <a...@p...onet.pl> napisał(a):
> Wszystko sie zgadza. Napisalem ze jest blad w qsort.
Ja to zrozumiałem dosłownie jako zarzut dla funkcji qsort, że źle działa :)
Błąd nie jest w qsort tylko w jego wywołaniu :) I jak go będziesz dobrze
wołać to bus error zniknie.
> Ale pierwszy raz sie
> spotykam ze przy takim bledzie wyskakuje "Błąd szyny" oto mi chodzilo.
Ja ten błąd po prostu miałem zawsze przy złym manipulowaniu wskaźnikami,
przy błędzie dostępu do pamięci.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 12 days, 21 hours, 59 minutes and 0 seconds
-
7. Data: 2010-03-23 19:48:14
Temat: Re: Bus error
Od: Jędrzej Dudkiewicz <j...@g...com>
a...@p...onet.pl pisze:
> Witam.
> Jest taki maly programik.
[...]
> po kompilacji na linux Slackware 12.2.0 dostaje cos takiego
[...]
> albo jeszcze taka odp. 0 Błąd szyny
Na Sparcu i paru innych dostajesz Bus error, jeżeli odczytujesz n bajtów
z adresu niepodzielnego przez n. Ale na intelu prawdopodobnie
nadpisujesz stos i procesor nie rozpoznaje instrukcji. Na Linuksie
(przynajmniej jeszcze jakiś czas temu, co Wojciech Muła może
potwierdzić), procesor przy złej instrukcji zamiast SIGILL wysyłał
SIGBUS [1].
JD
1. O ile mnie pamięć nie myli :P