Date: Mon, 17 Oct 2005 00:04:19 EST-10EDT,10,-1,0,7200,3,-1,0,7200,3600 Subject: [UnixOS2_Archive] No. 633 ************************************************** Sunday 16 October 2005 Number 633 ************************************************** Subjects for today 1 Re: LIBC Error: Couldn't register process in shared memory! : Knut St. Osmundsen" 2 Re: LIBC Error: Couldn't register process in shared memory! : Roman Trunov **= Email 1 ==========================** Date: Sat, 15 Oct 2005 19:46:46 +0200 From: "Knut St. Osmundsen" Subject: Re: LIBC Error: Couldn't register process in shared memory! Roman Trunov wrote: > Hello, > > I tried to run some programs built with latest GCC (scummvm, wvgui > latest etc.) on Warp 3 with FP#43 and all of them refused to run. All I > got is subject message. > > I think this is very bad for members of OS/2 community who do not want > to upgrade stable systems. Backward compatiblity always was strong side > of OS/2, but it's broken now. > > Can this be fixed? Yes, is can be fixed. However, I'm not willing to spend time finding space for and installing a outdated Warp4 or Warp3 system. I simply do not have time for that these days. It's a simple and probably very stupid bug, in LIBC. If you're a tiny bit familiar with the debugger (icsdebug, ipmd, idebug, idbug) you can help me fix it by debugging it for me. If not you'll have to wait until someone else does that job. Kind Regards, knut **= Email 2 ==========================** Date: Sun, 16 Oct 2005 13:20:36 +0400 From: Roman Trunov Subject: Re: LIBC Error: Couldn't register process in shared memory! Knut St. Osmundsen wrote: > It's a simple and probably very stupid bug, in LIBC. Please forgot the mail about source code which I've sent to you directly. I've just found it with help of debugger, disassember and some luck. Yes, very stupid bug. On second attempt to allocate shared memory, you've typed: DosAllocSharedMem( ....., address); while it must be DosAllocSharedMem( ....., &address); I wonder why it wasn't diagnosed by warnings. I've patched ONE BYTE in the existing dll, changing mov to lea: libc06r1.dll (912103 bytes) OFFSET 000173E7: 8B => 8D And it's working well now... Roman