[java] windows 2k / xp laten vastlopen

Pagina: 1
Acties:

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
code:
1
2
3
4
5
6
7
public class CrashWin2kXP {
  public static void main(String args[]) {
    for (;;) {
    System.out.print("hung up\t\t\b\b\b\b\b\b");
    }
  }
}

het heeft eigenlijk maar 3 loops nodig , maar hij hangt. kwam het tegen op flipcode.

pretty strange shit, ehj? en het werkt ook met c# en c/c++

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

dit is toch gewoon eenoneindige loop of zie ik dat verkeerd ?

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op vrijdag 26 oktober 2001 09:44 schreef wasigh het volgende:
dit is toch gewoon eenoneindige loop of zie ik dat verkeerd ?
hij hangt al na 3 loops... dus dat maakt in princiepe niet zoveel uit

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op vrijdag 26 oktober 2001 09:45 schreef Scorpion het volgende:

[..]

hij hangt al na 3 loops... dus dat maakt in princiepe niet zoveel uit
en wat diet ie als je het niet in een loop zet maar gewoon drie keer onder elkaar print aanroept???

Cogito Ergo Credo


  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op vrijdag 26 oktober 2001 09:51 schreef jopiek het volgende:

[..]

en wat diet ie als je het niet in een loop zet maar gewoon drie keer onder elkaar print aanroept???
zou het niet weten -> heb zelf geen winxp/2k, maar heb reacties gezien waar het bovenste stukje code dus werkt.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

[edit]grrrr... waarom blijft deze site zo haperen??

[edit 2] typo`s in mijn 1e edit :)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

hmmmm... misschien zie jij maar drie loops op je scherm.. maar dat wil niet zeggen dat die for nog maar bij de 3e itteratie is.
probeer het volgende maar eens met:
code:
1
2
3
4
5
for(int k=0;k<3;k++)
{
System.out.println("hung up\t\t\b\b\b\b\b\b");

}

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

NT heeft dus blijkbaar moeite met een backslash .. :?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Als je die pagina leest zie je dat het met de functie _setbuf te maken heeft:
Of course being the glutton for punishment that I am I had to try this out. But I decided to do a debug trace through the assembly. It turns out that you only need to run the printf() twice to bomb a 2k system. The actual bsod occurs inside a routine called _setbuf. The first time this function is called it terminates immediately. The second time it sits for about a second and then, boom! I assume it runs into an infinite loop and since console output is running in the kernel(?) it overwrites some memory it shouldn't.. but that's just a guess and I'm not going try it a third time =).

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
M.a.w.: Als bovenstaande verhaal klopt... Buffer overrun... vergelijkbaar met voorbij je array schrijven, kan allerlij gezeik veroorzaken.


De outputstream van C++ is een gebufferde stream, ik neem aan die van Java ook. Die stream wordt af en toe geflushed naar het scherm.. Ik durf te wedden dat wanneer je je output flushed in elke loop, dat er dan niks geen problemen zullen zijn.

Edit: Nah, je scherm loopt een beetje bomvol, ok dat wel.

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 15-09 23:09
Gaat automatisch in java.

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Hmm...tja maar er bestond toch geen DOS (lees commandoregel) meer in XP?? :+

Verwijderd

The - DDD: Als bovenstaande verhaal klopt... Buffer overrun... vergelijkbaar met voorbij je array schrijven, kan allerlij gezeik veroorzaken.
Een buffer overrun in de kernel dus, anders zou dit nooit je OS (moeten) kunnen laten hangen.
Orphix: Hmm...tja maar er bestond toch geen DOS (lees commandoregel) meer in XP?? :+
Geen DOS, wel commandline.

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op Saturday 27 October 2001 14:48 schreef Mastermind het volgende:
Gaat automatisch in java.
Mag ik je er op wijzen dat het commando System.out.print() wordt gebruikt en niet System.out.println()? Het scheelt maar twee letters. Die laatste flushed inderdaad bij elke keer je buffer, die eerste dus niet.

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
En inderdaad ik heb het net even getest...

Met println is het: geen probleem, een oneindige lus.

Met print is het: wel een probleem, ik zag wat op m'n scherm flitsen wat op bestandsnamen leek en toen pof een reboot.

Ja ik heb het echt allebij getest. Heeft dus puur te maken met het flushen van de buffers.

Enne, het kan best zijn dat een bepaalde functie maar 2 keer wordt aangeroepen, die functie haalt het buffer leeg en schrijft het naar het scherm. Maar bedenk nou zelf is, wat zal winnen? Een lus die als een idioot een buffer volpompt of een langzame IO routine die hetzelfde buffer moet leeghalen en op scherm zetten schrijven.

Effecten op mijn systeem: een reboot, meer niet.

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op Friday 26 October 2001 10:10 schreef Alarmnummer het volgende:
hmmmm... misschien zie jij maar drie loops op je scherm.. maar dat wil niet zeggen dat die for nog maar bij de 3e itteratie is.
probeer het volgende maar eens met:
code:
1
2
3
4
5
for(int k=0;k<3;k++)
{
System.out.println("hung up\t\t\b\b\b\b\b\b");

}
Die loopt dus niet vast.

Probeer deze is: "System.out.print("hung up\t\t\b\b\b\b\b\b\n");"

Dus een \n aan het eind. Maar het aantal keren hung up op je scherm zegt geen ene flikker over hoe vaak door de lus draaien een vastloper veroorzaakt. Het is gebufferde output, vergeet dat niet.

Verwijderd

The - DDD: Met print: wel een probleem, ik zag wat op m'n scherm flitsen wat op bestandsnamen leek en toen pof een reboot.
Output redirecten naar een file? :? (Of "werkt" het dan niet meer?)
Effecten op mijn systeem: een reboot, meer niet.
Wat wil nog meer dan? Dat je bak ineens gaat stofzuigen? :? :+

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op Sunday 28 October 2001 05:27 schreef Arien het volgende:

[..]

Output redirecten naar een file? :? (Of "werkt" het dan niet meer?)
[..]

Wat wil nog meer dan? Dat je bak ineens gaat stofzuigen? :? :+
Dat eerste: Moet je testen, kan allebij zijn, naar een bestand schrijven is ook een gebufferde stream als ik het me goed herinner.

Dat tweede: Het zou wel ultiem zijn als tie dat zou doen. (Ik bedoelde dus dat het niet mijn Win2K om zeep hielp.) :P

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 14-09 09:56
M.a.w.: Als bovenstaande verhaal klopt... Buffer overrun... vergelijkbaar met voorbij je array schrijven, kan allerlij gezeik veroorzaken.
...
Een buffer overrun in de kernel dus, anders zou dit nooit je OS (moeten) kunnen laten hangen.
...
Effecten op mijn systeem: een reboot, meer niet.
Als er een buffer overrun op kernel niveau plaatsvind: zou dit geen beveiligingsgat kunnen worden?

Of wat te denken aan iemand die dit in een cgi-applicatie verwerkt (java, c, misschien php en perl ook wel (tenslotte in c geschreven)) en daarmee een win2k server mee laat rebooten? (Nu zal dit laatste wel niet zoveel voor komen, omdat (denk ik) de meeste windows webservers meer aan asp doen.)

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Infinitive: Nu zal dit laatste wel niet zoveel voor komen, omdat (denk ik) de meeste windows webservers meer aan asp doen.
Perl kan prima ASP doen. ;)
Pagina: 1