The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

Go Back   UNIX og Linux Forums > Top Forums > HøjtstÃ¥ende Programmering
.
google unix.com



Højtstående Programmering Post spørgsmål om C, C + +, Java, SQL, og andre programmerings sprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Som Base Level Filesets nødvendigt med et specifikt program? cypher82 UNIX for Advanced & Ekspertsøgning Brugere 4 05-29-2008 09:07 AM
Hjælp behov for C-program dwgi32 Højtstående Programmering 2 11-19-2007 10:44 AM
Mærkelige ting ved FSS og VGs mhenryj AIX 4 11-13-2007 04:42 PM
Mærkelige resultater med awk amatheny Shell Programmering og Scripting 2 11-01-2007 06:12 PM
Weird Message???? lesstjm UNIX for dummyer Spørgsmål & svar 6 01-04-2002 10:01 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 11-14-2007
karthikb23 karthikb23 is offline
Registreret Bruger
  
 

Join Date: Nov 2007
Stillinger: 18
Tak

Thanks guys for t input.

Nå n1, jeg tænkte på samme måde. Tager det et skridt videre, da j blev afsat 15 bytes, selvom jeg input en buffer på sige 20 (dybest> 15), programmet ikke standse.

Nu antages tht k peger på nogle placering på / omkring rummet afsat til j, hvorfor denne betingelse ikke give anledning til en overflow og derefter fremkalde en SEGV?

Shouldn't SEGV opstå, når mit program adgangsveje nogen hukommelse uden for den tildelte plads? (endsige gyldig / ugyldig addessses)

Også, bemærkede jeg tht forud for en sprintf på 'k', dens værdi var engang, at i Stdout, og én gang af strengen i sprintf. Så måske disse behandles som gyldige adresser og inden programmet grænserne?

BTW, jeg kom op med ovennævnte scenario accidently, når man eksperimenterer noget. Også, jeg ved med sikkerhed, hvad jeg gør, er ulovligt, men perplexes mig, når det virker!
  #2 (permalink)  
Old 11-14-2007
porter porter is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Jan 2007
Stillinger: 2965
Citat:
Oprindeligt Indsendt af karthikb23 View Post
Shouldn't SEGV opstå, når mit program adgangsveje nogen hukommelse uden for den tildelte plads? (endsige gyldig / ugyldig addessses)
Det er en gennemførelse detaljer, hvordan strenge dette er nogle arkitekturer kan lige tilkalde op til den virtuelle hukommelse og føje det til din arbejdsdag sæt, især hvis OS mener du bare udvide stakken.

Også forskellige arkitekturer er strengere end andre med hensyn til (a) skriftligt over kode områder (b) udrettet forkert adgang.
  #3 (permalink)  
Old 11-14-2007
DreamWarrior DreamWarrior is offline
Registreret Bruger
  
 

Join Date: oktober 2003
Stillinger: 70
Har du forsøgt at udskrive indholdet af 'j', når den eksisterer? Siden indførelsen af 'j' er, hvad der forårsager SEGV at stoppe så jeg vil gætte på dens indhold er at påvirke resultatet.

Alle er så fokuserede på 'k', har jeg endnu ikke se nogen nævne »i«. Den sprintf skal traverse uanset indholdet »i« er at pege på og udleder, at 'k'. Jeg formoder, at 'j' og 'jeg' har mere en relation end 'j' og 'k'.

Hvis jeg var nødt til at tage et gæt, 'j' (når den findes) har, på et tidspunkt, en null terminatorsekvenser ( '\ 0') i den, og »i« er (på et tidspunkt før SEGV) kører ind i Indholdet af "J". Dette har selvfølgelig begrænser mængden af "affald" kan du både læse og holde fast i unreferenced 'k' og dermed mindsker muligheden for at SEGV.

Tag 'j' ud af billedet og sprintf naturligvis løber ind i et område med hukommelse bør det ikke. Mit gæt, mens sprintf er kører »i« enten du overflow dælen ud af "k", fordi der ikke er nogen null terminatorsekvenser i hukommelsen i temmelig lang tid, eller der ikke er nogen null terminatorsekvenser før sprintf bliver i teksten segment og OS ikke kan lide det overtrædelse af de data segment.

Jeg vil teste min teori, men AIX støbekerner uanset tilstedeværelsen af "J".
  #4 (permalink)  
Old 11-14-2007
karthikb23 karthikb23 is offline
Registreret Bruger
  
 

Join Date: Nov 2007
Stillinger: 18
kunne være, men når jeg udskrives indholdet af j, det var "" (naturligvis, da det er en dummy).
Men måske kunne der være nogle skrald i de 15 bytes tildelt.
Ligesom u nævnt, må vi dump kerne begge gange.

Også, ligesom porter nævnt er det op til OS når / hvor meget det skal være præcise.
  #5 (permalink)  
Old 11-15-2007
n1djs n1djs is offline
Registreret Bruger
  
 

Join Date: Nov 2007
Stillinger: 12
En SEGV per definition betyde, du forsøger at skrive til et segment uden hukommelse tildelt dig. I det første tilfælde, du havde ingen oplagring tildeles kun henvisninger, så den første skrive gav dig SEGV. Den anden er sværere at opdage en fejl. Så længe du er ved at skrive til nogen hukommelse er afsat til dig, vil du ikke få et SEGV. Din pointers kun ske til at pege på tildeles hukommelse, i dette tilfælde din j [] karakter array. Skriv nok ting der, og du får en SEGV der også, når du falder af i slutningen af din tildeles hukommelse. Den compiler & run tid libs har ingen idé, hvis du ønsker at pege på tildeles hukommelse, eller hvor i, at de afsatte hukommelse, du vil gerne med Deres pointers. Så længe du peger på tildeles hukommelse, runtime, vil ikke udstede en SEGV (Du er ikke skriftligt uden for tildelt hukommelse)
  #6 (permalink)  
Old 11-15-2007
porter porter is offline Forum Advisor  
Registreret Bruger
  
 

Join Date: Jan 2007
Stillinger: 2965
Typisk stakke er forlænget med segment krænkelser, i stedet for at afsætte en stor stak til en proces, det sætter vagt sider under det, og når du falde over dem, det vokser stakken.
  #7 (permalink)  
Old 11-16-2007
DreamWarrior DreamWarrior is offline
Registreret Bruger
  
 

Join Date: oktober 2003
Stillinger: 70
Citat:
Oprindeligt Indsendt af karthikb23 View Post
kunne være, men når jeg udskrives indholdet af j, det var "" (naturligvis, da det er en dummy).
Men måske kunne der være nogle skrald i de 15 bytes tildelt.
Ligesom u nævnt, må vi dump kerne begge gange.

Også, ligesom porter nævnt er det op til OS når / hvor meget det skal være præcise.
De ville sige "selvfølgelig" men "selvfølgelig" alle de andre henvisninger bør sættes til NULL også. Skriv til NULL bør give anledning til SEGV .... Men hvis det er "" så det er en del af, hvorfor eksistensen af 'j' er at stoppe dig fra SEGV. Fordi mens sprintf er gennemkører strengen 'i' til at dumpe sit indhold i 'k', straks det rammer de NULL terminator og begrænser skaderne. Helt muligvis den "skade" gjort ligger helt inden for den tildelte stakken og aldrig SEGVs. Uanset hvad, er du clobbering ting, du bør ikke.

Desuden er jeg ikke sikker på, at en SEGV (pr. definition) er altid skyldes skriver. Der er en tekst og data segment, og jeg vil formode, at et forsøg på at læse teksten segmentet også kan forårsage en SEGV i nogle operativsystemer.
Closed Thread

Bogmærker

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er PÃ¥
Smilies er PÃ¥
[IMG] koden er PÃ¥
HTML-koden er Slukket
Trackbacks er PÃ¥
Pingbacks er PÃ¥
Refbacks er PÃ¥




Alle tidspunkter er GMT -4. Den tid er nu 11:33 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0