/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
Bech_bb 500
kyllekylle 500
jdjespers.. 500
gibson 300
scootergr.. 300
molokyle 287
10  strarup 270
Et noget pudsigt coredump
Fra : Anders Wegge Keller


Dato : 05-11-09 13:00


Jeg prøver på at finde en forklaring på hvad det er der er gået galt
her:

....
604 if (list->chutes[pr->chute].activelu!=NULL) {
605 if (!(list->chutes[pr->chute].activelu->emergency_mode)) {
....

Eksekveringen stopper i linie 605 med en SIGSEGV, så jeg har checekt
mine pointere, og fundet frem til at list->chutes[pr->chute].activelu
rent faktisk er NULL. Så det er sådan set forventligt at jeg får en
fejl der. Det harmonerer bare ikke helt med det check der er i linien
før, så hvad er det lige der går galt?

Godtnok er SCO's implementation af cc ikke altid den skarpeste kniv i
skuffen, men alligevel ..

--
/Wegge

Leder efter redundant peering af dk.*,linux.debian.*

 
 
Mogens Hansen (05-11-2009)
Kommentar
Fra : Mogens Hansen


Dato : 05-11-09 13:58


"Anders Wegge Keller" <wegge@wegge.dk> wrote in message
news:87y6mltc4m.fsf@huddi.jernurt.dk...
>
> Jeg prøver på at finde en forklaring på hvad det er der er gået galt
> her:
>
> ...
> 604 if (list->chutes[pr->chute].activelu!=NULL) {
> 605 if (!(list->chutes[pr->chute].activelu->emergency_mode)) {
> ...
>
> Eksekveringen stopper i linie 605 med en SIGSEGV, så jeg har checekt
> mine pointere, og fundet frem til at list->chutes[pr->chute].activelu
> rent faktisk er NULL. Så det er sådan set forventligt at jeg får en
> fejl der. Det harmonerer bare ikke helt med det check der er i linien
> før, så hvad er det lige der går galt?

Er du sikker på at det er linie 605 og ikke 604 der crasher ?
Er du sikker på at pointerne "list", "pr" og "activelu" er gyldige ? Altså
at de peger ind i en blok der er allokeret (og ikke frigivet).
Er du sikker på at "pr->chute" ikke indekserer uden for "list->chutes"
længde ?

>
> Godtnok er SCO's implementation af cc ikke altid den skarpeste kniv i
> skuffen, men alligevel ..

Ja - en fejl i compileren er altid en mulighed, og det forekommer også. Men
jeg syntes som regel at fejlen findes i ens eget program...

--
Venlig hilsen

Mogens Hansen



Bertel Lund Hansen (05-11-2009)
Kommentar
Fra : Bertel Lund Hansen


Dato : 05-11-09 14:03

Anders Wegge Keller skrev:

> Jeg prøver på at finde en forklaring på hvad det er der er gået galt
> her:

> 604 if (list->chutes[pr->chute].activelu!=NULL) {
> 605 if (!(list->chutes[pr->chute].activelu->emergency_mode)) {

605 vil reagere positivt på en egentlig værdi som er tallet 0. Er
det en mulighed?

--
Bertel
http://bertel.lundhansen.dk/         FIDUSO: http://fiduso.dk/

Anders Wegge Keller (05-11-2009)
Kommentar
Fra : Anders Wegge Keller


Dato : 05-11-09 14:34

"Mogens Hansen" <mogens_h@dk-online.dk> writes:

> "Anders Wegge Keller" <wegge@wegge.dk> wrote in message

...

>> Eksekveringen stopper i linie 605 med en SIGSEGV, så jeg har
>> checekt mine pointere, og fundet frem til at
>> list->chutes[pr->chute].activelu rent faktisk er NULL. SÃ¥ det er
>> sådan set forventligt at jeg får en fejl der. Det harmonerer bare
>> ikke helt med det check der er i linien før, så hvad er det lige
>> der går galt?
>
> Er du sikker på at det er linie 605 og ikke 604 der crasher ?

dbxtra hævder hårdnakket at det er 605, men efter yderligere klogen
rundt i det, er jeg overbevist om at det er i 604 vi har balladen.

> Er du sikker på at pointerne "list", "pr" og "activelu" er gyldige ?
> Altså at de peger ind i en blok der er allokeret (og ikke frigivet).
> Er du sikker på at "pr->chute" ikke indekserer uden for
> "list->chutes" længde ?

Jeg har isoleret det til at pr er NULL. Men dbxtra er så venlig at
den glad og gerne fortæller at "pr->chute" er 56, hvilket iøvrigt er
en værdi der er indenfor det gyldige range.

>> Godtnok er SCO's implementation af cc ikke altid den skarpeste kniv i
>> skuffen, men alligevel ..

> Ja - en fejl i compileren er altid en mulighed, og det forekommer
> også. Men jeg syntes som regel at fejlen findes i ens eget
> program...

Ja, det er en 12 år gammel fejl, der muligvis har vist sig en gang
eller to før, sådan som jeg læser de gamle sager på projektet. Men jeg
vil nu stadig pege fingre ad debuggeren, og glæde mig over at vi er
ved at porte os væk fra SCO.

--
/Wegge

Leder efter redundant peering af dk.*,linux.debian.*

Anders Wegge Keller (05-11-2009)
Kommentar
Fra : Anders Wegge Keller


Dato : 05-11-09 14:35

Bertel Lund Hansen <splitteminebramsejl@lundhansen.dk> writes:

> Anders Wegge Keller skrev:
>
>> Jeg prøver på at finde en forklaring på hvad det er der er gået galt
>> her:
>
>> 604 if (list->chutes[pr->chute].activelu!=NULL) {
>> 605 if (!(list->chutes[pr->chute].activelu->emergency_mode)) {
>
> 605 vil reagere positivt på en egentlig værdi som er tallet 0. Er
> det en mulighed?

Det ville ikke give et coredump der. Se i øvrigt mit svar til Mogens.

--
/Wegge

Leder efter redundant peering af dk.*,linux.debian.*

Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407844
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste