eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Bus error
Ilość wypowiedzi w tym wątku: 7

  • 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

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: