home bbs files messages ]

Just a sample of the Echomail archive

Cooperative anarchy at its finest, still active today. Darkrealms is the Zone 1 Hub.

   MAKENL_NG      MakeNL Next Generation.      1,725 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 682 of 1,725   
   Ulrich Schroeter to Andrew Leary   
   Debugged OS2-32bit bug (Release of v3.3.   
   24 Jun 13 00:39:23   
   
   Hi Andrew,   
      
   Wednesday June 19 2013 08:50, you wrote to mark lewis:   
      
    AL>    Hello mark!   
    AL> 05 Jun 13 13:09, you wrote to Ulrich Schroeter:   
    US>>> version a:   
    US>>>    int maxnum = 0;   
    US>>>    print maxnum results in =>  710691913   
    ml>> he aims...   
    ml>> C shoots!   
    ml>> C Scores!!   
    AL> This appears to be an OpenWatcom issue.  I've already modified the   
    AL> code to use version b, with no effect on the SearchMaxMSG crash under   
    AL> OS/2.   
      
   today I've got the debugger running   
      
   the program crashes 'cause the _dos_findnext() routine moves a memory segment   
   into another memory area, which helds the content of the local int variables   
      
   the debug report you'll find under   
   https://sourceforge.net/p/makenl/bugs/17/?limit=10&page=1#2cd6   
      
   based on the oswatfnd.c, oswatful.c, oswatxxx.h, osgenaps.c and os.c   
   an ASM routine _dos_findnext() starts moving around some memory   
   in the debugger it identifies itself as:   
   Assembly: findos2   
      005B:0002AF6A      findos2@copydir_+0000002A   
      
   the code section   
    0002AF59                mov      ecx,dword ptr 10[edx]                          
   0053:00049474=000000EF   
    0002AF5C                lea      edi,1E[eax]   
    0002AF5F                mov      dword ptr 1A[eax],ecx                          
   0053:000497DE=000000EF   
    0002AF62                mov      ecx,00000040   
    0002AF67                lea      esi,1D[edx]   
      
   >0002AF6A                rep movsd    0053:0004987A=00030   
      
   loops until all the defined memory area is moved.   
      
   The memory address of maxnum is defined &49878  and aktnum at &4987C   
   so in every _dos_findnext() the previously maxnum = 0 was reset   
   to whatever value moved into the ram location by the findnext routine :-P   
      
   Solution(s) ?   
   I don't realy know ...   
   I assume, that the findfirst() / findnext() code requires a defined   
   memory allocation ?!?   
   -or-   
   further investigation is needed to discover the reason, why _dos_findnext()   
   writes into a memory area that is allocated by the active process   
      
   but the source under oswatfnd.c   
      
   char *os_findnext(struct _filefind *pff)   
   {   
       if (_dos_findnext(&pff->fileinfo) == 0)   
           return pff->fileinfo.name;   
      
       return NULL;   
   }   
      
   doesn't give much info what's go wrong within _dos_findnext()   
      
   As least similar findfirst() findnext() routines   
   as shown under   
   http://www.openwatcom.org:4000/@md=d&cd=//&cdf=//depot/public/4o   
   2/c/wrappers.c &ra=s&c=rGG@//depot/public/4os2/c/wrappers.c?ac=64   
   has some more code included.   
      
   here 2 comments are of interest:   
     20 Aug 07 GKY Move #pragma alloc_text to end for OpenWatcom compat   
     01 Sep 07 GKY Add xDosSetPathInfo to fix case where FS3 buffer crosses 64k     
   boundry   
      
   maybe something similar is required for the makenl_ng code  ?!?   
      
    AL> Andrew   
      
   regards, uli   ;-)   
      
   ---   
    * Origin: AMBROSIA - Frankfurt/Main - Germany (2:244/1120)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca