Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Speicherbegrenzung + Kernelspace



Lord Kefir
05-10-2005, 17:20
Hab' da mal 'ne Frage bezüglich Kernelprogrammierung: ich schreibe momentan ein Modul, dass ein Procfile erstellt. Die Daten werden in einem eindimensionalen char-Array gespeichert.
Das Problem ist, dass ich nicht mehr als 1024 Zeichen in das Array einfügen kann - habe mehrere Stringfunktionen ausprobiert bzw. sie auch zum Test selbst implementiert. Leider hat kein Ansatz funktioniert...

Hat jemand eine Ahnung, ob es irgendeine Speicherbegrenzung gibt?

Mfg, Lord Kefir

Thomas Engelke
17-10-2005, 12:02
Wie groß ist denn das Array? Und nein, es gibt keine Begrenzung in deiner Größenordnung.

TME

Lord Kefir
18-10-2005, 20:28
Es ist ein simples Char-Array mit 1024 Zeichen. Wie gesagt, 'strcat' und ähnliche Standardfunktionen versagen seltsamer Weise. Bei dem Array handelt es sich um einen Buffer für ein Procfile.
Ich kann scheinbar machen was ich will - durch diverse Tests habe ich herausgefunden, dass bei 1024 Zeichen 'ne Grenze liegt.

Mfg, Lord Kefir

Joghurt
18-10-2005, 20:45
Durch welche Tests? Was passiert, wenn du das Array auf 2048 erhöhst?
Legst du das Array auf dem Stack an?

Fragen über Fragen...

Thomas Engelke
19-10-2005, 07:46
Ich bin mir nicht sicher, ob ich da nicht was falsch verstanden habe. Korrigiere mal bitte die Punkte, die du anders gemeint hast.

1. Du legst ein char-Array (char[1024]) mit 1024 Zeichen Größe an (Indizies 0..1023)
2. Du möchtest mehr als 1024 Zeichen darin unterbringen. Dies funktioniert nicht. Du fragst dich, warum nicht.

So, wie es mir scheint, ist das technisch völlig okay.

TME

Lord Kefir
19-10-2005, 14:02
Jep, Du hast mein Problem richtig verstanden...

Mensch, manchmal sind Probleme echt dämlich ;) Das Problem lag nicht an meinem Modul sondern an meinem Terminal. Wenn ich mein Procfile mit 'cat' ausgebe werden mehr Zeichen ausgegeben, als mein Terminal auf einmal verkraftet - ab 1024 Zeichen wird der Rest einfach abgeschnitten. Habe die Datei einfach mal mit einem Editor geöffnet (vi) und siehe da: alles ist in Ordnung.

Naja... hätte ich auch mal eher drauf kommen können, als den Code stundenlang nach Fehlern zu durchsuchen...

Mfg, Lord Kefir

`kk
19-10-2005, 16:18
Ich haette jetzt (wie Thomas wahrscheinlich auch...) an nen Buffer Overflow gedacht. Merkwuerdig. :eek:

Lord Kefir
19-10-2005, 18:09
Das war auch erst meine Vermutung, weshalb ich stundenlang vergebens den Sourcecode überpüft habe... ich bin froh, dass sich der Fehler im Endeffekt als so einfach herausgestellt hat.

Mfg, Lord Kefir

Thomas Engelke
20-10-2005, 08:03
Ich haette jetzt (wie Thomas wahrscheinlich auch...) an nen Buffer Overflow gedacht. Merkwuerdig. :eek:

Merkwürdig kam mir nur vor, daß der Overflow genau nach bereits einem Zeichen zuviel auftreten soll. Normalerweise hat man nicht so ein Glück, die Segmentgrenzen so offensichtlich gut zu erwischen :)

TME