www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1993/03/16/17:33:08

Date: 16 Mar 93 13:27:00 +0003 (GMT+3:00)
From: "Fine-62701 219828" <fine AT main1 DOT jinr DOT dubna DOT su>
Subject: RE: djgpp 1.10
To: "djgpp" <djgpp AT sun DOT soe DOT clarkson DOT edu>

  I had had some trouble in my package trying SYSTEM function.
  
  Having applied the next patch received from Chris 
("kuku AT acds DOT physik DOT rwth-aachen DOT de") I resolved my problem.

  So I did not hear anything about paging bugs in this list yet 
I'd like to know is it included in next go32 release? 
=================================================================
Dr. Valery Fine /LCTA            Telex 911621 dubna su
                                 Fax (+7 095) 975 23 81
Joint Inst. for Nuclear Res.     Email: fine AT main1 DOT jinr DOT dubna DOT su
Head Post Office, PO Box 79             fine AT vxcern DOT cern DOT ch
Moscow, 101000
Russia
================= Appendix =========================

   Chris has written:

> P.S.
> paging.c follows:
>
>
> I find a trouble in go32.
> I show you a sample program for the trouble. Please compile
> it with djgpp, and run with go32 (not debug32).
>
> /* this is file go32chk.c */
> #include <stdio.h>
> char a[24576]={1};
> void main()
> {
>     printf ("1: a[12288]= %d\n",a[12288]);
>     a[12288]=-1;
>     printf ("2: a[12288]= %d\n",a[12288]);
>
>     system("echo child process");
>
>     printf ("   a[8192]= %d\n",a[8192]);
>     printf ("3: a[12288]= %d\n",a[12288]);
> }
> /* end of file */
>
>      > gcc go32chk.c
>      > go32 a.out
>
> Of cource the expected result is:
>
> 1: a[12288]= 0
> 2: a[12288]= -1
> child process
>    a[8192]= 0
> 3: a[12288]= -1
>
> but some results may be:
>
> 1: a[12288]= 0
> 2: a[12288]= -1
> child process
>    a[8192]= 0
> 3: a[12288]= 0
>
> I think that this is due to a bug in the paging mechanism.
> This bug is rare but I feel it is very dangerous...
>
> Patch for go32 1.09 to fix this trouble follows.
> Please try and test it.
>
> *** paging.c0   Sun Nov  1 07:54:38 1992
> --- paging.c    Fri Jan  8 09:27:46 1993
> ***************
> *** 110,116 ****
>   word32 far *vcpi_pt = 0;
>   extern word32 graphics_pt_lin;
>   char paging_buffer[4096*MAX_PAGING_NUM];
> - static int paged_out_something = 0;
>
>   word32 screen_primary, screen_secondary;
>
> --- 110,115 ----
> ***************
> *** 567,573 ****
>       return 0;
>     }
>     count = MAX_PAGING_NUM;
> !   if ((count > mem_avail/4) || (paged_out_something))
>       count = 1;
>     if (pti + count > 1024)
>       count = 1024 - pti;
> --- 566,572 ----
>       return 0;
>     }
>     count = MAX_PAGING_NUM;
> !   if (count > mem_avail/4)
>       count = 1;
>     if (pti + count > 1024)
>       count = 1024 - pti;
> ***************
> *** 582,587 ****
> --- 581,588 ----
>     {
>       if (pt[pti] & PT_P)
>         break;
> +     if (eaddr != -1 && (pt[pti] & PT_I) != 0)
> +       break;  /* EastWind 1993 */
>       dblock = pt[pti] >> 12;
>       pn = valloc(VA_1M);
>       pt[pti] &= 0xfffL & ~(word32)(PT_A | PT_D);
> ***************
> *** 629,635 ****
>         }
>         pt[pti] |= PT_I;
>       }
> -     if (paged_out_something)
>         break;
>     }
>     if (eaddr != -1)
> --- 630,635 ----
> ***************
> *** 680,687 ****
>   #if TOPLINEINFO
>     old_status = update_status('>' | 0x0a00, 79);
>   #endif
> -   if (!fInPageOutEverything)
> -     paged_out_something = 1;
>     start_pdi = last_po_pdi;
>     start_pti = last_po_pti;
>     if (where == VA_640)
> --- 680,685 ----
>
> The variable "paged_out_something" seemed to be expected to
> fix the paging problem, but it was imperfect.  I took away
> it.
>
> At last, I want to hear DJ's view.
> Do you think multi-page-loading mechanism is effective?
> (Should MAX_PAGING_NUM be 4 ?)
>
> Thank you very much.
>
>                      Faculty of Eng., Mi'e Univ., Tsu, Japan.
>                      na70103 AT mips DOT cc DOT mie-u DOT ac DOT jp    Makoto Kobayashi
> $


- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019