[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gcl-devel] GCL on mingw

From: Vadim V. Zhytnikov
Subject: Re: [Gcl-devel] GCL on mingw
Date: Sun, 14 Dec 2003 19:05:30 +0300
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.5) Gecko/20031006

Camm Maguire ?????:

Hi Vadim!  And thanks!

OK, so now I believe this build uses the sbrk emulation routine found
in unexnt.c.

I don't think so. First of all there is no unexnt.o file in the
/o directory.  Second, I can't any line numbering information
when stopped at sbrk after 'p sbrk(4096)'.  What I'm doing wrong?
Hrere is gdb session transcript:

$ gdb raw_gcl
GNU gdb 5.2.1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-mingw32"...
(gdb) br initlisp
Breakpoint 1 at 0x402df5
(gdb) r ./ <foo
Starting program: C:\msys\1.0\home\vadim\gcl-debug\unixport/raw_gcl.exe ./ <foo

Breakpoint 1, 0x00402df5 in initlisp ()
(gdb) p /x sbrk(65080*4096)
$1 = 0x101c8000
(gdb) br sbrk
Breakpoint 2 at 0x478169
(gdb) p /x sbrk(4096)

Breakpoint 2, 0x00478169 in sbrk ()
(gdb) The program being debugged stopped while in a function called from GDB.
When the function (sbrk) is done executing, GDB will silently
stop (instead of continuing to evaluate the expression containing
the function call).
Dump of assembler code for function sbrk:
0x478163 <sbrk>:        push   %ebp
0x478164 <sbrk+1>:      mov    %esp,%ebp
0x478166 <sbrk+3>:      sub    $0x18,%esp
0x478169 <sbrk+6>:      mov    0x8(%ebp),%eax
0x47816c <sbrk+9>:      mov    %eax,0xfffffff8(%ebp)
0x47816f <sbrk+12>:     cmpl   $0xf0a0f0a0,0x53b500
0x478179 <sbrk+22>:     jne    0x4781b8 <sbrk+85>
0x47817b <sbrk+24>:     call   0x478115 <allocate_heap>
0x478180 <sbrk+29>:     mov    %eax,0x53b500
0x478185 <sbrk+34>:     cmpl   $0x0,0x53b500
0x47818c <sbrk+41>:     jne    0x47819a <sbrk+55>
0x47818e <sbrk+43>:     movl   $0x0,0xffffffec(%ebp)
0x478195 <sbrk+50>:     jmp    0x4782d4 <sbrk+369>
0x47819a <sbrk+55>:     mov    0x53b500,%eax
0x47819f <sbrk+60>:     mov    %eax,0x53b504
0x4781a4 <sbrk+65>:     mov    0x53b504,%eax
0x4781a9 <sbrk+70>:     mov    %eax,0x53b508
0x4781ae <sbrk+75>:     mov    0x53b510,%eax
0x4781b3 <sbrk+80>:     mov    %eax,0x53b50c
0x4781b8 <sbrk+85>:     mov    0x53b504,%eax
0x4781bd <sbrk+90>:     mov    %eax,0xfffffffc(%ebp)
0x4781c0 <sbrk+93>:     cmpl   $0x0,0xfffffff8(%ebp)
0x4781c4 <sbrk+97>:     jns    0x47825f <sbrk+252>
0x4781ca <sbrk+103>:    lea    0xfffffff8(%ebp),%eax
0x4781cd <sbrk+106>:    negl   (%eax)
0x4781cf <sbrk+108>:    mov    0xfffffff8(%ebp),%edx
0x4781d2 <sbrk+111>:    mov    0x53b504,%eax
0x4781d7 <sbrk+116>:    sub    %edx,%eax
0x4781d9 <sbrk+118>:    cmp    0x53b500,%eax
0x4781df <sbrk+124>:    jae    0x4781ed <sbrk+138>
0x4781e1 <sbrk+126>:    movl   $0x0,0xffffffec(%ebp)
0x4781e8 <sbrk+133>:    jmp    0x4782d4 <sbrk+369>
0x4781ed <sbrk+138>:    mov    0xfffffff8(%ebp),%edx
0x4781f0 <sbrk+141>:    mov    0x53b504,%eax
0x4781f5 <sbrk+146>:    sub    %edx,%eax
0x4781f7 <sbrk+148>:    mov    %eax,0xfffffff0(%ebp)
0x4781fa <sbrk+151>:    mov    0x53b9e4,%eax
0x4781ff <sbrk+156>:    mov    0xfffffff0(%ebp),%edx
0x478202 <sbrk+159>:    add    %eax,%edx
0x478204 <sbrk+161>:    mov    0x53b9e4,%eax
0x478209 <sbrk+166>:    not    %eax
0x47820b <sbrk+168>:    and    %edx,%eax
0x47820d <sbrk+170>:    mov    %eax,0xfffffff0(%ebp)
0x478210 <sbrk+173>:    mov    0xfffffff0(%ebp),%edx
0x478213 <sbrk+176>:    mov    0x53b508,%eax
0x478218 <sbrk+181>:    sub    %edx,%eax
0x47821a <sbrk+183>:    mov    %eax,0xfffffff4(%ebp)
0x47821d <sbrk+186>:    mov    0xfffffff0(%ebp),%eax
0x478220 <sbrk+189>:    mov    %eax,0x53b508
0x478225 <sbrk+194>:    cmpl   $0x0,0xfffffff4(%ebp)
0x478229 <sbrk+198>:    jle    0x478254 <sbrk+241>
0x47822b <sbrk+200>:    sub    $0x4,%esp
0x47822e <sbrk+203>:    push   $0x4000
0x478233 <sbrk+208>:    pushl  0xfffffff4(%ebp)
0x478236 <sbrk+211>:    pushl  0x53b508
0x47823c <sbrk+217>:    call   0x531c00 <address@hidden>
0x478241 <sbrk+222>:    add    $0x4,%esp
0x478244 <sbrk+225>:    test   %eax,%eax
0x478246 <sbrk+227>:    jne    0x478254 <sbrk+241>
0x478248 <sbrk+229>:    movl   $0x0,0xffffffec(%ebp)
0x47824f <sbrk+236>:    jmp    0x4782d4 <sbrk+369>
0x478254 <sbrk+241>:    mov    0xfffffff8(%ebp),%eax
0x478257 <sbrk+244>:    sub    %eax,0x53b504
0x47825d <sbrk+250>:    jmp    0x4782ce <sbrk+363>
0x47825f <sbrk+252>:    cmpl   $0x0,0xfffffff8(%ebp)
0x478263 <sbrk+256>:    jle    0x4782ce <sbrk+363>
0x478265 <sbrk+258>:    mov    0xfffffff8(%ebp),%eax
0x478268 <sbrk+261>:    mov    0x53b504,%edx
0x47826e <sbrk+267>:    add    %eax,%edx
0x478270 <sbrk+269>:    mov    0x53b510,%eax
0x478275 <sbrk+274>:    add    0x53b500,%eax
0x47827b <sbrk+280>:    cmp    %eax,%edx
0x47827d <sbrk+282>:    jbe    0x478288 <sbrk+293>
0x47827f <sbrk+284>:    movl   $0x0,0xffffffec(%ebp)
0x478286 <sbrk+291>:    jmp    0x4782d4 <sbrk+369>
0x478288 <sbrk+293>:    push   $0x4
0x47828a <sbrk+295>:    push   $0x1000
0x47828f <sbrk+300>:    pushl  0xfffffff8(%ebp)
0x478292 <sbrk+303>:    pushl  0x53b504
0x478298 <sbrk+309>:    call   0x531bd0 <address@hidden>
0x47829d <sbrk+314>:    test   %eax,%eax
0x47829f <sbrk+316>:    jne    0x4782aa <sbrk+327>
0x4782a1 <sbrk+318>:    movl   $0x0,0xffffffec(%ebp)
0x4782a8 <sbrk+325>:    jmp    0x4782d4 <sbrk+369>
0x4782aa <sbrk+327>:    mov    0xfffffff8(%ebp),%eax
0x4782ad <sbrk+330>:    add    %eax,0x53b504
0x4782b3 <sbrk+336>:    mov    0x53b9e4,%eax
0x4782b8 <sbrk+341>:    mov    0x53b504,%edx
0x4782be <sbrk+347>:    add    %eax,%edx
0x4782c0 <sbrk+349>:    mov    0x53b9e4,%eax
0x4782c5 <sbrk+354>:    not    %eax
0x4782c7 <sbrk+356>:    and    %edx,%eax
0x4782c9 <sbrk+358>:    mov    %eax,0x53b508
0x4782ce <sbrk+363>:    mov    0xfffffffc(%ebp),%eax
0x4782d1 <sbrk+366>:    mov    %eax,0xffffffec(%ebp)
0x4782d4 <sbrk+369>:    mov    0xffffffec(%ebp),%eax
0x4782d7 <sbrk+372>:    leave
0x4782d8 <sbrk+373>:    ret
End of assembler dump.
(gdb) l
        in tmp-diveby3.s
(gdb) 1 tmp-diveby3.s: No such file or directory.

Please repeat the steps below, and after the first sbrk,
do 'b sbrk', then with the second 'p sbrk(4096)', step into the
routine line by line and report where it fails.  I'd like to see the
result of
p get_reserved_heap_size ()

If the routine fails at the VirtualAlloc call, try modifying the call
by increasing the first argument by some amount, thereby deternining
whether a skip is needed.  Also would like the man page if any for

Take care,

"Vadim V. Zhytnikov" <address@hidden> writes:

Camm Maguire ?????:

"Vadim V. Zhytnikov" <address@hidden> writes:

&j          0x22ff64
&Cnil_body  0x54d1a0
core_end    0x101c8000

OK, given that you are having problems around 65000 pages (p/x
65000*4096 + 0x101c8000=0x1ffb0000)
I'm guessing something, most likely the shared library area, starts
at 0x20000000.  Is there any way that you can confirm this?  What is
the max data segment size returned by ulimit -a?  Should be
unlimited.  At the above break point in gdb, can you print the results
p sbrk(65000*4096)
then keep running 'p sbrk(xxx*4096)' with some reasonable interval
until you get over 0x20000000, and let me know if there is a jump and
if so how big.

(gdb) br initlisp
Breakpoint 1 at 0x402df5
(gdb) r ./ <foo
Starting program:
C:\msys\1.0\home\vadim\gcl-debug\unixport/raw_gcl.exe ./ <foo

Breakpoint 1, 0x00402df5 in initlisp ()
(gdb) p /x core_end
$1 = 0x101c8000
(gdb) p /x sbrk(65080*4096)
$2 = 0x101c8000
(gdb) p /x sbrk(4096)
$3 = 0x0
(gdb) info dll
DLL Name                          Load Address
ntdll.dll                         77f51000
C:\WINDOWS\system32\kernel32.dll  77e61000
C:\WINDOWS\system32\msvcrt.dll    77c01000
C:\WINDOWS\system32\user32.dll    77d31000
C:\WINDOWS\system32\gdi32.dll     77c61000
C:\WINDOWS\system32\advapi32.dll  77dc1000
C:\WINDOWS\system32\rpcrt4.dll    77cb1000
C:\WINDOWS\System32\wsock32.dll   71ab1000
C:\WINDOWS\System32\ws2_32.dll    71a91000
C:\WINDOWS\System32\ws2help.dll   71a81000
$ ulimit -a
core file size (blocks)     unlimited
data seg size (kbytes)      unlimited
file size (blocks)          unlimited
open files                  256
pipe size (512 bytes)       8
stack size (kbytes)         2046
cpu time (seconds)          unlimited
max user processes          63
virtual memory (kbytes)     2097152

     Vadim V. Zhytnikov


     Vadim V. Zhytnikov


reply via email to

[Prev in Thread] Current Thread [Next in Thread]