PrettyOS Fehler-/Testthread



  • hallo ihr,

    ich habe mit "bochs" ein problem mit dem laden des images. mir scheint, als ob der bootloader stage1 geladen wird, danach aber ein abbruch kommt. die version von prettyos habe ich nun nicht im kopf, weis aber das ckernel.c die version "0.0.0.530" hat.

    hier mal meine bochsrc.bxrc:

    ###############################################################
    # bochsrc.txt file for DLX Linux disk image.
    ###############################################################
    
    # how much memory the emulated machine will have
    megs: 32
    
    # filename of ROM images
    romimage: file="C:\Program Files\Bochs-2.4.5\BIOS-bochs-latest"
    vgaromimage: file="C:\Program Files\Bochs-2.4.5\VGABIOS-lgpl-latest"
    
    # what disk images will be used 
    floppya: 1_44="C:\prettyos\trunk\Source\FloppyImage.img", status=inserted
    #floppyb: 1_44=floppyb.img, status=inserted
    
    # hard disk
    #ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
    #ata0-master: type=disk, path="hd10meg.img", cylinders=306, heads=4, spt=17
    
    # choose the boot disk.
    boot: a
    
    # default config interface is textconfig.
    #config_interface: textconfig
    #config_interface: wx
    
    #display_library: x
    # other choices: win32 sdl wx carbon amigaos beos macintosh nogui rfb term svga
    
    # where do we send log messages?
    log: C:\prettyos\trunk\Source\bochsout.txt
    
    # disable the mouse, since DLX is text only
    mouse: enabled=0
    
    # enable key mapping, using US layout as default.
    #
    # NOTE: In Bochs 1.4, keyboard mapping is only 100% implemented on X windows.
    # However, the key mapping tables are used in the paste function, so 
    # in the DLX Linux example I'm enabling keyboard_mapping so that paste 
    # will work.  Cut&Paste is currently implemented on win32 and X windows only.
    
    #keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-us.map
    #keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-fr.map
    keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-de.map
    #keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-es.map
    

    hier noch das output der bochsout.txt:

    00000000000i[     ] Bochs x86 Emulator 2.4.5
    00000000000i[     ]   Build from CVS snapshot, on April 25, 2010
    00000000000i[     ] System configuration
    00000000000i[     ]   processors: 1 (cores=1, HT threads=1)
    00000000000i[     ]   A20 line support: yes
    00000000000i[     ] CPU configuration
    00000000000i[     ]   level: 6
    00000000000i[     ]   SMP support: no
    00000000000i[     ]   APIC support: yes
    00000000000i[     ]   FPU support: yes
    00000000000i[     ]   MMX support: yes
    00000000000i[     ]   3dnow! support: no
    00000000000i[     ]   SEP support: yes
    00000000000i[     ]   SSE support: sse2
    00000000000i[     ]   XSAVE support: no
    00000000000i[     ]   AES support: no
    00000000000i[     ]   MOVBE support: no
    00000000000i[     ]   x86-64 support: yes
    00000000000i[     ]   1G paging support: no
    00000000000i[     ]   MWAIT support: no
    00000000000i[     ]   VMX support: no
    00000000000i[     ] Optimization configuration
    00000000000i[     ]   RepeatSpeedups support: yes
    00000000000i[     ]   Trace cache support: yes
    00000000000i[     ]   Fast function calls: yes
    00000000000i[     ] Devices configuration
    00000000000i[     ]   ACPI support: yes
    00000000000i[     ]   NE2000 support: yes
    00000000000i[     ]   PCI support: yes, enabled=yes
    00000000000i[     ]   SB16 support: yes
    00000000000i[     ]   USB support: yes
    00000000000i[     ]   VGA extension support: vbe cirrus
    00000000000i[MEM0 ] allocated memory at 02D80020. after alignment, vector=02D81000
    00000000000i[MEM0 ] 32,00MB
    00000000000i[MEM0 ] mem block size = 0x00100000, blocks=32
    00000000000i[MEM0 ] rom at 0xfffe0000/131072 ('C:\Program Files\Bochs-2.4.5\BIOS-bochs-latest')
    00000000000i[MEM0 ] rom at 0xc0000/40448 ('C:\Program Files\Bochs-2.4.5\VGABIOS-lgpl-latest')
    00000000000i[CMOS ] Using local time for initial clock
    00000000000i[CMOS ] Setting initial clock to: Fri Jul 02 17:55:29 2010 (time0=1278086129)
    00000000000i[DMA  ] channel 4 used by cascade
    00000000000i[DMA  ] channel 2 used by Floppy Drive
    00000000000i[FDD  ] fd0: 'C:\prettyos\trunk\Source\FloppyImage.img' ro=0, h=2,t=80,spt=18
    00000000000i[PCI  ] 440FX Host bridge present at device 0, function 0
    00000000000i[PCI  ] PIIX3 PCI-to-ISA bridge present at device 1, function 0
    00000000000i[MEM0 ] Register memory access handlers: 0x000a0000 - 0x000bffff
    00000000000i[WGUI ] Desktop Window dimensions: 1280 x 800
    00000000000i[WGUI ] Number of Mouse Buttons = 5
    00000000000i[WGUI ] IME disabled
    00000000000i[KMAP ] Loading keymap from 'C:\Program Files\Bochs-2.4.5/keymaps/x11-pc-de.map'
    00000000000i[KMAP ] Loaded 212 symbols
    00000000000i[MEM0 ] Register memory access handlers: 0xe0000000 - 0xe0ffffff
    00000000000i[CLVGA] VBE Bochs Display Extension Enabled
    00000000000i[CLVGA] interval=50000
    00000000000i[     ] init_dev of 'unmapped' plugin device by virtual method
    00000000000i[     ] init_dev of 'biosdev' plugin device by virtual method
    00000000000i[     ] init_dev of 'speaker' plugin device by virtual method
    00000000000i[     ] init_dev of 'extfpuirq' plugin device by virtual method
    00000000000i[     ] init_dev of 'gameport' plugin device by virtual method
    00000000000i[     ] init_dev of 'pci_ide' plugin device by virtual method
    00000000000i[PCI  ] PIIX3 PCI IDE controller present at device 1, function 1
    00000000000i[     ] init_dev of 'acpi' plugin device by virtual method
    00000000000i[PCI  ] ACPI Controller present at device 1, function 3
    00000000000i[     ] init_dev of 'ioapic' plugin device by virtual method
    00000000000i[IOAP ] initializing I/O APIC
    00000000000i[MEM0 ] Register memory access handlers: 0xfec00000 - 0xfec00fff
    00000000000i[     ] init_dev of 'keyboard' plugin device by virtual method
    00000000000i[KBD  ] will paste characters every 1000 keyboard ticks
    00000000000i[     ] init_dev of 'harddrv' plugin device by virtual method
    00000000000i[HD   ] Using boot sequence floppy, none, none
    00000000000i[HD   ] Floppy boot signature check is enabled
    00000000000i[     ] init_dev of 'serial' plugin device by virtual method
    00000000000i[SER  ] com1 at 0x03f8 irq 4
    00000000000i[     ] init_dev of 'parallel' plugin device by virtual method
    00000000000i[PAR  ] parallel port 1 at 0x0378 irq 7
    00000000000i[     ] register state of 'unmapped' plugin device by virtual method
    00000000000i[     ] register state of 'biosdev' plugin device by virtual method
    00000000000i[     ] register state of 'speaker' plugin device by virtual method
    00000000000i[     ] register state of 'extfpuirq' plugin device by virtual method
    00000000000i[     ] register state of 'gameport' plugin device by virtual method
    00000000000i[     ] register state of 'pci_ide' plugin device by virtual method
    00000000000i[     ] register state of 'acpi' plugin device by virtual method
    00000000000i[     ] register state of 'ioapic' plugin device by virtual method
    00000000000i[     ] register state of 'keyboard' plugin device by virtual method
    00000000000i[     ] register state of 'harddrv' plugin device by virtual method
    00000000000i[     ] register state of 'serial' plugin device by virtual method
    00000000000i[     ] register state of 'parallel' plugin device by virtual method
    00000000000i[SYS  ] bx_pc_system_c::Reset(HARDWARE) called
    00000000000i[CPU0 ] cpu hardware reset
    00000000000i[APIC0] allocate APIC id=0 (MMIO enabled) to 0xfee00000
    00000000000i[CPU0 ] CPUID[0x00000000]: 00000003 756e6547 6c65746e 49656e69
    00000000000i[CPU0 ] CPUID[0x00000001]: 00000f20 00000800 00002000 078bfbff
    00000000000i[CPU0 ] CPUID[0x00000002]: 00410601 00000000 00000000 00000000
    00000000000i[CPU0 ] CPUID[0x00000003]: 00000000 00000000 00000000 00000000
    00000000000i[CPU0 ] CPUID[0x00000004]: 00000000 00000000 00000000 00000000
    00000000000i[CPU0 ] CPUID[0x80000000]: 80000008 00000000 00000000 00000000
    00000000000i[CPU0 ] CPUID[0x80000001]: 00000000 00000000 00000101 2a100800
    00000000000i[CPU0 ] CPUID[0x80000002]: 20202020 20202020 20202020 6e492020
    00000000000i[CPU0 ] CPUID[0x80000003]: 286c6574 50202952 69746e65 52286d75
    00000000000i[CPU0 ] CPUID[0x80000004]: 20342029 20555043 20202020 00202020
    00000000000i[CPU0 ] CPUID[0x80000006]: 00000000 42004200 02008140 00000000
    00000000000i[CPU0 ] CPUID[0x80000007]: 00000000 00000000 00000000 00000000
    00000000000i[CPU0 ] CPUID[0x80000008]: 00003020 00000000 00000000 00000000
    00000000000i[     ] reset of 'unmapped' plugin device by virtual method
    00000000000i[     ] reset of 'biosdev' plugin device by virtual method
    00000000000i[     ] reset of 'speaker' plugin device by virtual method
    00000000000i[     ] reset of 'extfpuirq' plugin device by virtual method
    00000000000i[     ] reset of 'gameport' plugin device by virtual method
    00000000000i[     ] reset of 'pci_ide' plugin device by virtual method
    00000000000i[     ] reset of 'acpi' plugin device by virtual method
    00000000000i[     ] reset of 'ioapic' plugin device by virtual method
    00000000000i[     ] reset of 'keyboard' plugin device by virtual method
    00000000000i[     ] reset of 'harddrv' plugin device by virtual method
    00000000000i[     ] reset of 'serial' plugin device by virtual method
    00000000000i[     ] reset of 'parallel' plugin device by virtual method
    00000003305i[BIOS ] $Revision: 1.247 $ $Date: 2010/04/04 19:33:50 $
    00000200000i[WGUI ] dimension update x=720 y=400 fontheight=16 fontwidth=9 bpp=8
    00000318042i[KBD  ] reset-disable command received
    00000444800i[VBIOS] VGABios $Id: vgabios.c,v 1.69 2009/04/07 18:18:20 vruppert Exp $
    
    00000444871i[CLVGA] VBE known Display Interface b0c0
    00000444903i[CLVGA] VBE known Display Interface b0c5
    00000447828i[VBIOS] VBE Bios $Id: vbe.c,v 1.62 2009/01/25 15:46:25 vruppert Exp $
    00000760517i[BIOS ] Starting rombios32
    00000761014i[BIOS ] Shutdown flag 0
    00000761695i[BIOS ] ram_size=0x02000000
    00000762173i[BIOS ] ram_end=32MB
    00000802745i[BIOS ] Found 1 cpu(s)
    00000822014i[BIOS ] bios_table_addr: 0x000fbc18 end=0x000fcc00
    00000822117i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
    00001149814i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
    00001477742i[P2I  ] PCI IRQ routing: PIRQA# set to 0x0b
    00001477763i[P2I  ] PCI IRQ routing: PIRQB# set to 0x09
    00001477784i[P2I  ] PCI IRQ routing: PIRQC# set to 0x0b
    00001477805i[P2I  ] PCI IRQ routing: PIRQD# set to 0x09
    00001477815i[P2I  ] write: ELCR2 = 0x0a
    00001478700i[BIOS ] PIIX3/PIIX4 init: elcr=00 0a
    00001486658i[BIOS ] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 class=0x0600
    00001489220i[BIOS ] PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 class=0x0601
    00001491621i[BIOS ] PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 class=0x0101
    00001491851i[PIDE ] new BM-DMA address: 0xc000
    00001492555i[BIOS ] region 4: 0x0000c000
    00001494865i[BIOS ] PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 class=0x0680
    00001495103i[ACPI ] new irq line = 11
    00001495117i[ACPI ] new irq line = 9
    00001495147i[ACPI ] new PM base address: 0xb000
    00001495161i[ACPI ] new SM base address: 0xb100
    00001495189i[PCI  ] setting SMRAM control register to 0x4a
    00001659283i[CPU0 ] Enter to System Management Mode
    00001659293i[CPU0 ] RSM: Resuming from System Management Mode
    00001823313i[PCI  ] setting SMRAM control register to 0x0a
    00001832484i[BIOS ] MP table addr=0x000fbcf0 MPC table addr=0x000fbc20 size=0xd0
    00001834543i[BIOS ] SMBIOS table addr=0x000fbd00
    00001836931i[BIOS ] ACPI tables: RSDP addr=0x000fbe20 ACPI DATA addr=0x01ff0000 size=0x988
    00001840169i[BIOS ] Firmware waking vector 0x1ff00cc
    00001851282i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
    00001852126i[BIOS ] bios_table_cur_addr: 0x000fbe44
    00014041543i[BIOS ] Booting from 0000:7c00
    00037968000p[WGUI ] >>PANIC<< Window closed, exiting!
    00037968000i[CPU0 ] CPU is in real mode (active)
    00037968000i[CPU0 ] CS.d_b = 16 bit
    00037968000i[CPU0 ] SS.d_b = 16 bit
    00037968000i[CPU0 ] EFER   = 0x00000000
    00037968000i[CPU0 ] | RAX=0000000000000000  RBX=0000000000000000
    00037968000i[CPU0 ] | RCX=0000000000000000  RDX=0000000000000000
    00037968000i[CPU0 ] | RSP=000000000000fffa  RBP=0000000000000000
    00037968000i[CPU0 ] | RSI=00000000000e2b02  RDI=000000000000ffac
    00037968000i[CPU0 ] |  R8=0000000000000000   R9=0000000000000000
    00037968000i[CPU0 ] | R10=0000000000000000  R11=0000000000000000
    00037968000i[CPU0 ] | R12=0000000000000000  R13=0000000000000000
    00037968000i[CPU0 ] | R14=0000000000000000  R15=0000000000000000
    00037968000i[CPU0 ] | IOPL=0 id vip vif ac vm rf nt of df if tf sf ZF af PF cf
    00037968000i[CPU0 ] | SEG selector     base    limit G D
    00037968000i[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
    00037968000i[CPU0 ] |  CS:f000( 0004| 0|  0) 000f0000 0000ffff 0 0
    00037968000i[CPU0 ] |  DS:0000( 0005| 0|  0) 00000000 0000ffff 0 0
    00037968000i[CPU0 ] |  SS:7c00( 0005| 0|  0) 0007c000 0000ffff 0 0
    00037968000i[CPU0 ] |  ES:0000( 0005| 0|  0) 00000000 0000ffff 0 0
    00037968000i[CPU0 ] |  FS:0000( 0005| 0|  0) 00000000 0000ffff 0 0
    00037968000i[CPU0 ] |  GS:0000( 0005| 0|  0) 00000000 0000ffff 0 0
    00037968000i[CPU0 ] |  MSR_FS_BASE:0000000000000000
    00037968000i[CPU0 ] |  MSR_GS_BASE:0000000000000000
    00037968000i[CPU0 ] | RIP=000000000000ff53 (0000000000007c6b)
    00037968000i[CPU0 ] | CR0=0x60000010 CR2=0x0000000000000000
    00037968000i[CPU0 ] | CR3=0x00000000 CR4=0x00000000
    00037968000i[CPU0 ] 0x0000000000007c6b>> mov ax, 0x0004 : B80400
    00037968000i[CMOS ] Last time is 1278086138 (Fri Jul 02 17:55:38 2010)
    00037968000i[     ] restoring default signal behavior
    00037968000i[CTRL ] quit_sim called with exit code 1
    


  • die version von prettyos habe ich nun nicht im kopf, weis aber das ckernel.c die version "0.0.0.530"

    0.0.0.530 ist die Version 😉

    Vielleicht hilft als erste Maßnahme ein Update auf 0.0.1.9, es kann sein, das Du eine Version hast, die Fehler enthält. Bei mir zumindest funktioniert Version 0.0.1.9 unter Bochs.

    Kommen irgendwelche Fehlermeldungen? Es gab mal Probleme mit Bochs, das einen Fehler in der KeyQueue gefunden haben wollte, und deshalb panisch wurde. Da kam dann eine Fehlermeldung. Der scheint aber inzwischen weg zu sein, "panic: action=ignore" ist nicht mehr nötig im brxc-File um PrettyOS auszuführen.



  • danke dir 🙂 mir scheint aber eher, als ob meine bochs installation kapput ist... auf realer hardware laufen beide versionen... na, darum kümmere ich mich gleich mal...


  • Mod

    Steige lieber um auf Qemu, VBox oder VMWare.


  • Mod

    Aktueller Problemstatus bei 0.0.1.43 - Rev: 607: 🙄

    1. vm86 Testcode (ckernel.c, Zeilen 104 - 112) macht Probleme auf real PC
    2. fdir bleibt hängen (schon länger beobachtet)

  • Mod

    Aktueller Problemstatus bei 0.0.1.66 - Rev: 635: 🙄

    1. strg + t (ruft scheduler_log() auf) führt zum #PF --> Absturz
    2. fdir bleibt hängen (schon länger beobachtet) --> Absturz

    EDIT: alles erledigt 👍


  • Mod

    im IRC:
    <somone>MrX: ich habe mal versucht ein userprogramm zu schreiben mit, fgets u. fputc, aber qemu bringt fehlermeldungen, das ich nicht schreiben oder lesen kann...
    <somone>FLOPPY ERROR: fdctrl_write_data: can't write data in status mode
    <somone>FLOPPY ERROR: fdctrl_read_data: can't read data in CMD state

    EDIT: ich habe die syscall-Nr. korrigiert


  • Mod

    seit 0.0.1.131 werden "reboots" verzeichnet, die im Ablauf - nicht reproduzierbar - eintreten (qemu, PC). MrX: action please.

    general protection fault: err_code: 65276 adress(eip): 00113d10h...



  • Da dies der Testthread von PrettyOS ist ,wollte ich meinen Test wiedergeben.
    Also ich habe das Image des .tar.gz Archives verwendet ,welches ich von ehenkes bekommen habe.
    Dies habe ich natürlich prompt mit meiner Sun VirtualBox unter meinem Ubuntu getestet.
    Die Hardwareerkennung schien gut zu laufen zumindest ,wenn es nach der Ausgabe von PrettyOS ging.
    Dann bin ich in der ,für meine Verhältnisse unübersichtlichen, Shell gelandet.
    Sie ist deswegen unübersichtlich ,weil unter und über der Eingabe ,in der die eingegebenen Zeichen erscheinen, Text beziehungsweise ein Zug zu sehen ist und man erst suchen muss.
    Als ich damit zurecht gekommen bin habe ich help eingeben und die implementierten Funktionen/Befehle getestet.
    Alles hat funktioniert außer reboot.
    Und noch etwas ,was aber wahrscheinlich so gehört, ist ,dass mit dem Befehl fformat das Floppyimage nicht mehr PrettyOS gebootet hat.
    Also in diesem Sinne einen Gruß von mir und hoffentlich hilft euch mein Rückblick.
    tev


  • Mod

    vielen dank für das feedback. wir sind auch an weitergehenden tests aller art interessiert.

    tastenkombis
    strg+t (screenshot ==> floppy),
    strg+u (screenshot ==> usb-stick),
    ESC+h (Heap regions anzeigen)


  • Mod

    PrettyOS 0.0.1.166 - Rev: 744
    wenn ich hello starte und in konsole m strg+t ausführe, landet der ausdruck bei konsole 0, also bei hello (unerwartetes verhalten)


  • Mod

    ein übler fehler wurde entdeckt:

    zwischen svn rev. 579 und 580 ging das strg+s "kaputt". Test: img in qemu starten, strg+s, fdir (directory zerstört)

    Der erste Screenshot (strg+s) überschreibt boot2.bin (cluster #2 u. #3) und den ersten cluster (#4) von kernel.bin. Damit kann qemu PrettyOS nicht mehr starten.

    Dass dies über eine lange Strecke nicht entdeckt wurde, zeigt, wir brauchen einen vorgeschriebenen Testablauf, zumindest alle 10 commits, damit wir zeitnah Fehler entdecken. Hier bitte ich um Vorschläge.


  • Mod

    Ich versuche zunächst zur Fehlerbehebung den genauen Fehler einzugrenzen:

    FS_ERROR FAT_fputc(file_t* file, char c)
    {
        uint32_t retVal = FAT_fwrite(&c, 1, 1, file->data);
    
        /// TEST
        static uint32_t i=0; 
        i++;    
        printf("\tfputc %u ",i);    
        /// TEST
    
        if (retVal == 1)
        {
            /// TEST
            printf("OK  ");  
            if (i==4098)
            {
                waitForKeyStroke();
            }
            /// TEST
            return(CE_GOOD);
        }
        return CE_WRITE_ERROR;
    }
    

    Damit kann man den FAT_putc verfolgen. Nach dem 4098ten (video screen + zeilenumbruch) FAT_fputc wird qemu gestoppt und abgebrochen. Schaut man sich dann per EDITDISK boot2.bin und kernel.bin mit dem hex-editor an, so stellt man fest, dass diese Dateien unbeschädigt sind. screen.txt ist angelegt mit Größe 0 byte. Es fehlt also noch der dir-entry-Eintrag.

    Lässt man das waitForKeyStroke() durch Bestätigung in qemu weiter laufen, so wird boot.bin komplett mit 0 überschrieben und kernel.bin im ersten Sector genullt.

    Fazit: FAT_putc richtet hier keinen direkten Schaden an.

    ---------------

    Nächster Versuch:

    static uint32_t cluster2sector(FAT_partition_t* volume, uint32_t cluster)
    {
        //.....
    
        // #ifdef _FAT_DIAGNOSIS_
        printf("\n>>>>> cluster2sector<<<<<    cluster: %u  sector %u", cluster, sector);
        if (sector < 100) waitForKeyStroke();
        // #endif
        return (sector);
    }
    

    Hierbei fällt bei strg+s im unteren Bereich nur die Zahl "sector 19" an. Die Daten des Screenshots werden beginnend ab 0x51000 (sector 648 = 617+31) abgelegt. Dies führt auch nicht weiter.

    Die Daten, die z.Z. überschrieben werden, beginnen ab sector 33.

    ---------------

    ... und weiter gehts:

    static uint32_t fatWrite (FAT_partition_t* volume, uint32_t currCluster, uint32_t value, bool forceWrite)
    {
      /// TEST
      printf("\nfatWrite: currCluster %u value %X", currCluster, value);  
      /// TEST
    

    fat.h

    #define LAST_CLUSTER_FAT12   0xFF8
    

    http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_168_Analyzing_Bug_Screenshot.PNG

    Im Ergebnis sieht das aber gut aus: 😕
    http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_168_Analyzing_Bug_Screenshot_a.PNG


  • Mod

    Im irc:

    <DerHartmut>
    Testen: Jede sinnvolle Plattform, sprich: Mindestens 3 Virtuelle Maschinen und 2 Real-PCs (wenn nicht möglich dann halt nicht möglich), Funktion der Änderung testen, ggf. Testcode einbauen (bei Commit wieder entfernen), eventuelle Wechselwirkungen beachten und andere Stellen testen, falls Wechselwirkungen vorhanden.

    Also ich persönlich <DerHartmut> mache das so
    1. Code schreiben
    2. Compillieren, bis er sauber durchbaut
    3. Testcode schreiben (falls nötig), mit printf() mögliche Ausgaben ausgeben
    4. Ist vom Code noch anderer Code betroffen?
    5. Rekursion!
    6. Alles klappt? Testcode entfernen, nochmal durchbauen
    7. Committen


  • Mod

    Ich habe nun alle Schreibvorgänge protokolliert:
    http://www.henkessoft.de/OS_Dev/Bilder/0_0_1_168_Analyzing_Bug_Screenshot_b.PNG

    2:       FAT1 
    11:      FAT2 
    19:      Root Directory 
    648 ff.: Data
    

    Da sieht man keinen "Angriff" auf Sektor 33-35 (0x4200 ff.)
    Da würde dort ja auch etwas anderes stehen als lauter Nullen. 🙄


  • Mod

    Es liegt am Readcache. Der genaue Fehler muss noch gefunden und beseitigt werden.


  • Mod

    Vorbemerkung: Unerkannte Bugs sind ein echtes Problem, weil sie an unpassender Stelle zuschlagen können, vor allem in Kombination, und Verwirrung stiften.
    Bugs müssen zeitnah erkannt werden, da man so am besten reagieren kann. Daher wird hier ein systematischer Test vorgeschlagen.
    Dinge, die man ständig beim Ausführen von PrettyOS implizit testet, werden ausgelassen, z.B. Boot-Verhalten.

    Test für PrettyOS (sollte alle 10 commits durchgeführt und dokumentiert werden):
    ---------------------------------------------------------------------------------

    CPU:
    FPU-Test (should be implemented at ESC+f)

    Memory:
    recognized correctly? (should be implemented at ESC+m)

    Keyboard:
    Are AltGr keys recognized? Test known combinations of strg+key or ESC+key?

    Video/Monitor:
    Physical Address of grafics card?
    Which vbe modes are shown?
    Does vbe grafics work properly?

    Tasking/Scheduler:
    Start different programs in their own consoles. Check with strg+t.
    Change freqency at timer_install(100). Try 1000 Hz.

    Floppy Disk Device:
    Please test the sequence strg+s, fdir, strg+s, fdir.
    Load "arrow" two times.

    USB mass storage devices:
    Try FAT16 and FAT32 (and FAT12 if possible):
    Please test the sequence strg+u, strg+u, strg+u. Test the Directory and the content of screenshot (3 texts in "screen.txt").

    Networking:
    Describe environment. Test ARP reply, PING reply. All incoming packets recognized?

    User Library:
    Load program "test" (to be developed).

    Bitte um Mithilfe, diesen Test weiter auszuarbeiten.


  • Mod

    Neben der Optimierung des äußeren Testens (eigentlich Overhead) gilt es, folgende Strategie verstärkt zu beachten:

    1. Loggen/Visualisieren
    2. Internes Testen durch PrettyOS selbst
    3. Verstärkte Kommunikation bezüglich Änderungen bei Memory und Prozess Management (hier sind ausführliches Loggen und Tests bei mehreren Umgebungen unerlässlich, um Fehler möglichst früh zu detektieren und zu debuggen)

  • Mod

    problem im task management:

    0.0.1.223 - Rev: 807
    ...
    current task: pid: 6
    running tasks:
    pid: 5 esp: C020CEB0h eip: 001150DEh PD: 01021000h k_stack: C020D000h
    parent: 0
    pid: 0 esp: 0018FF00h eip: 00000000h PD: 01021000h k_stack: 00000000h
    child-threads: 5
    pid: 6 esp: C02055C0h eip: 001150DEh PD: 01021000h k_stack: C0205720h
    parent: 0
    blocked tasks:
    pid: 3 esp: C0002F70h eip: 001150DEh PD: C0208000h k_stack: C0003120h
    freetime task:
    pid: 1 esp: C0001054h eip: 001150DEh PD: 01021000h k_stack: C00010A8h

    pid0 hat 2 kinder, verleugnet aber eines davon


  • Mod

    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1948598.html#1948598
    Der neue beschleunigte Lesevorgang bewirkt massive Kollateralschäden. strg+s zerschlägt z.B. so einiges. Um Analyse / Behebung wird gebeten, damit wir das beschleunigte Lesen beibehalten können.


Anmelden zum Antworten