X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: "PetroffHeroj" Newsgroups: comp.os.msdos.djgpp Subject: Fw: Please, receive a report for a bug in DOS4GW 1.97. Date: Tue, 14 Oct 2003 17:21:24 +0000 (UTC) Organization: Webplus NEWS server Lines: 148 Distribution: world Message-ID: NNTP-Posting-Host: dialup76-29.ip.peterstar.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Trace: news.wplus.net 1066152084 33373 217.195.76.157 (14 Oct 2003 17:21:24 GMT) X-Complaints-To: usenet AT news DOT wplus DOT net NNTP-Posting-Date: Tue, 14 Oct 2003 17:21:24 +0000 (UTC) X-Mailer: dMail [Demos Mail for DOS v2.7.9] Status: RO To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Newsgroups: comp.lang.asm.x86 alt.comp.os.ms-dos alt.msdos Newsgroups: alt.msdos.programmer alt.os.free-dos alt.os.free_dos Newsgroups: alt.os.free_dos.hacking comp.os.msdos.programmer Newsgroups: comp.os.msdos.apps comp.os.msdos.djgpp comp.os.msdos.misc Newsgroups: relcom.msdos Greetings. This message has been cross-posted to a significant amount of conferences, so, first of all, apologies if this is an off-topic _here_! I deliberately allowed myself to do that, since getting info on DOS or getting help from DOS fellas has become a hard task nowadays, and I wanted as much response as possible. If you think the letter is an off-topic here, don't kill me :), but instead suggest some conferences (missing in the list), that you think are more proper. Thank you for understanding. Following is the message I have sent to Tenberry (ex-Rational Systems). However, I decided to post to Usenet because I didn't get any replies from Tenberry for about a week, and since they suggested to post to Usenet, well, I am now Tenberry-blessed, right? :) The message is self-explanatory, so I won't prepend it with much foreword. I'd be very thankful to get any _worth_ and _qualified_ opinions from you on the problem, with some practical experience, and it's my dream if some of you conducted the experiment described below, to reproduce the bug, and responded about results. It _would_ be heaven if someone could tell me the reason of the problem, but that's too daring :) Thank you and good bye! P.S. The source address is not present since I'd like the discussion to stay in public. If you want to mail directly for some reason, request the address here. -------------------------------------------------------------------------- From: "PetroffHeroj" To: 4gsupport AT tenberry DOT com,4gwhelp AT tenberry DOT com Date: 2003-10-02 Hello. This is a report for a bug in DOS4GW. First of all, the bug is in v1.97, and as I don't have any later versions, the descriptions of changes made in v2.01 of DOS4G and DOS4GW have been examined prior to sending this report, and the bug doesn't seem to be fixed yet. So I suppose the information is still valuable. The bug was found by accident, it was reproduced on several machines, it was proven that the bug is in DOS4GW interrupt handling code, because it doesn't happen with other extenders (tested with Tran's PMODE/W). Sorry, no disassembly was made to find out the cause of the bug itself, so you'll probably have to track it down yourself, unless it has been fixed already. The description of the situation that causes the bug follows: An int is hooked in the PM chain, then shelling to DOS; if an int occurs while SP=0 (not a frequent condition, but _completely legal_), DOS4GW crashes. It wasn't tested with _software generated_ ints, although results are supposed to be the same. It also wasn't tested _without shelling_ to DOS (by switching to RM and issuing/catching and int), but it's also supposed to be the same. Was tested under pure RM and under VCPI service of EMM386. Was _not_ tested under DPMI in either plain DOS or any DOS emulators. Hence it might be that the bug can be reproducible in RM or under VCPI only. The following code will help you to reproduce the bug. The first is the PM program linked with DOS4GW, compile it under Watcom with: wcc386 -i=<...>\h bug_pm wlink f bug_pm libp <...>\lib386;<...>\lib386\dos form os2 le op stub=wstub.exe Or to link with PMODE/W for testing purposes: wlink f bug_pm libp <...>\lib386;<...>\lib386\dos form os2 le op stub=pmodew.exe -- bug_pm.c -------------------------------------------------------------- #include #include #include __interrupt __far (*old_vect)(); void __far __interrupt suka() { __asm in al,61h __asm xor al,2 __asm out 61h,al (*old_vect)(); } void main() { old_vect=_dos_getvect(8); _dos_setvect(8,suka); printf("Errorlevel: %xh\n",system("c:\command.com")); _dos_setvect(8,old_vect); } -------------------------------------------------------------------------- The proggie hooks int 09 in the PM chain and just clicks the PC squeaker, then calling the old code. Hope you have PC squeaker :^) The following is a 16-bit asm program that causes the bug to show up when ran under the former one. It's converted for TASM syntax, can easily be converted to anything else. -- cause_rm.asm ---------------------------------------------------------- model tiny codeseg entry: org 100h xor sp,sp ;that is the key! again: mov ax,0E01h int 10h xor cx,cx delay: in al,0EBh loop delay in al,60h cm al,81h jne again int 20h ;sorry, retn-fellows... end entry -------------------------------------------------------------------------- Its main purpose is to have SP=0 most of the time and periodically show it's alive. Since it's almost certain that you have much faster machines than my 486, you can replace "xor cx,cx" and "loop delay" with "mov ecx,<...>" and "loopd delay" (or prefix "loop" with 67h manually). Basically, it's not a problem to write a similar program any way you like it. That's all. It would be very nice if you analysed the bug and responded whether it was reproducible for you or not, since you could have it fixed already. Thank you for your attention. Leonid