[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    Problems with large file support.
From:       Ludovic LANGE <ludovic.lange () ReMoVeMePlEaSEfree ! fr>
Date:       2001-05-30 21:32:28
[Download RAW message or body]

Hello,

A few days ago (15 or 16) the support for large files / 64bits was added
to Wine ( files/files.c, server/file.c, win32/file.c).

Since that modification, my Wine installation isn't functional any more,
and wine throws an exception while setting up the SystemHeap.

The exception occurs in heap.c, function HEAP_InitSubHeap, just at the
instruction : "subheap->heap       = heap;" while the subheap pointer is
valid.

It seems as if the protection of this memory areay was set to read-only,
and that the mprotect() call did not succeed in setting it to read/write.

I don't know where the real problem is, but since I found no record of
such problem in the lists archive, it may be a configuration problem of
mine.

However, having not found the solution, I'd like some advices.

I also think it could be a problem with my glibc not functionning with
64bits functions.

My system is a Linux 2.4.4 / RedHat 7.0 / redhat's glibc 2.2-12




Here is a working trace, before the support for 64bits functions was added :
=============================================================================0806cb00:trace:virtual:CreateFileMappingA
 (ffffffff,(nil),08000004,0000000000110000,"__SystemHeap")
0806cb00: create_mapping( size_high=0, size_low14112, protectg,
inherit=0,file_handle=0, name=L"__SystemHeap" )
0806cb00: create_mapping() = 0 { handle2 }
0806cb00: get_mapping_info( handle2 )
0806cb00: get_mapping_info() = 0 { size_high=0, size_low14112,
protectg, header_size=0, base=(nil), shared_file=0, shared_size=0 }
0806cb00: get_handle_fd( handle2, access000000 )
0806cb00: *fd* 32 -> 9
0806cb00: get_handle_fd() = 0 { fd=-1 }
0806cb00: set_handle_info( handle2, flags=0, mask=0, fd=6 )
0806cb00: set_handle_info() = 0 { old_flags=0, cur_fd=6 }
0806cb00:trace:virtual:MapViewOfFileEx handle  size0000 offset=0
0806cb00: dup_handle( src_process=-1, src_handle2, dst_process=-1,
access000000, inherit=0, options=2 )
0806cb00: dup_handle() = 0 { handle6, fd=-1 }
View: 65430000 - 6553ffff 36
     65430000 - 6553ffff c-rW-
0806cb00:trace:virtual:VirtualAlloc 65430000 00110000 1000 00000040
0806cb00:trace:virtual:VIRTUAL_SetProt 65430000-6553ffff c-rWx
View: 65430000 - 6553ffff 36
     65430000 - 6553ffff c-rWx
0806cb00: create_semaphore( initial000000, max000001, inherit=0,
name=L"")
=============================================================================

Here is the stack trace with support for 64 bits functions (more debug
traces of mine.)
=============================================================================0806cb40:trace:virtual:CreateFileMappingA
 (ffffffff,(nil),08000004,0000000000110000,"__SystemHeap")
0806cb40: create_mapping( size_high=0, size_low14112, protectg,
inherit=0, file_handle=0, name=L"__SystemHeap" )
0806cb40: create_mapping() = 0 { handle2 }
0806cb40:trace:heap:HEAP_CreateSystemHeap LLA
0806cb40: get_mapping_info( handle2 )
0806cb40: get_mapping_info() = 0 { size_high=0, size_low14112,
protectg, header_size=0, base=(nil), shared_file=0, shared_size=0 }
0806cb40: get_handle_fd( handle2, access000000 )
0806cb40: *fd* 32 -> 9
0806cb40: get_handle_fd() = 0 { fd=-1 }
0806cb40: set_handle_info( handle2, flags=0, mask=0, fd=6 )
0806cb40: set_handle_info() = 0 { old_flags=0, cur_fd=6 }
0806cb40:trace:virtual:MapViewOfFileEx handle  size0000 offset=0
0806cb40: dup_handle( src_process=-1, src_handle2, dst_process=-1,
access000000, inherit=0, options=2 )
0806cb40: dup_handle() = 0 { handle6, fd=-1 }
View: 65430000 - 6553ffff 36
     65430000 - 6553ffff c-rW-
0806cb40:trace:heap:HEAP_CreateSystemHeap LLA - after MapViewOfFileEx : 1077
0806cb40:trace:heap:HEAP_CreateSystemHeap LLA - line 1081
0806cb40:trace:heap:HEAP_InitSubHeap LLA address = 65430000 - line 478
0806cb40:trace:heap:HEAP_InitSubHeap LLA - line 482
0806cb40:trace:virtual:VirtualAlloc 65430000 00110000 1000 00000040
0806cb40:trace:virtual:VIRTUAL_SetProt 65430000-6553ffff c-rWx
View: 65430000 - 6553ffff 36
     65430000 - 6553ffff c-rWx
0806cb40:trace:virtual:VirtualAlloc LLA 65430000 00110000 1000 00000040
VIRTUAL_SetProt : base= 65430000
0806cb40:trace:heap:HEAP_InitSubHeap LLA - line 491
0806cb40:trace:heap:HEAP_InitSubHeap LLA subheap = 65430000 - line 518
0806cb40:trace:seh:EXC_RtlRaiseException codeĀ000005 flags=0
0806cb40: queue_exception_event( first=1,
record={context={flags000000,eax000047,ebx@12c0ec,ecxe430000,edxe430000,esi@128e05,e \
di110000,ebp000000,eip@0bb7eb,esp@626dd0,eflags010212,cs23,ds2b,es2b,fs8f,gs00 \
,dr0000000,dr1000000,dr2000000,dr3000000,dr6000000,dr7000000,float={00000000,000 \
00000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000 \
,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000 \
0000,00000000,00000000,00000000,00000000,00000000,00000000,00000000}},rec={codeĀ000005,flags=0,rec=(nil),addr=0x400bb7eb,params={1,65430010}
 )
0806cb40: queue_exception_event() = 0 { handle=0 }
=============================================================================


Any clues are welcome.


Best regards,

Ludovic LANGE


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic