Project

General

Profile

Actions

Bug #6364

closed

Segmentation fault happend when running test_cptr.rb

Added by raylinn@gmail.com (ray linn) about 12 years ago. Updated about 12 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 1.9.3p194 (2012-04-20) [x64-mingw32]
Backport:
[ruby-core:44636]

Description

Ruby 1.9.3-P194 compiled by MinGW64 (GCC 4.7.0), Compiled success, but failed when run test all. The same issue happened on GCC 4.6.3 + Ruby 1.9.3-P0. The error dump is

C:/msys/1.0/home/beta/ruby-1.9.3-p194/test/dl/test_cptr.rb:84: [BUG] Segmentation fault
ruby 1.9.3p194 (2012-04-20) [x64-mingw32]

-- Control frame information -----------------------------------------------
c:td p:---- s:td b:td l:td d:td CFUNC :call
c:td p:td s:td b:td l:td d:td BLOCK C:/msys/1.0/home/beta/ruby-1.9.3-p194/test/dl/test_cptr.rb:84
c:td p:---- s:td b:td l:td d:td FINISH
c:td p:---- s:td b:td l:td d:td CFUNC :open
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/test/dl/test_cptr.rb:81
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:949
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit/testcase.rb:17
c:td p:td s:td b:td l:td d:td BLOCK C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:787
c:td p:---- s:td b:td l:td d:td FINISH
c:td p:---- s:td b:td l:td d:td CFUNC :map
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:780
c:td p:td s:td b:td l:td d:td BLOCK C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:565
c:td p:---- s:td b:td l:td d:td FINISH
c:td p:---- s:td b:td l:td d:td CFUNC :each
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:563
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:746
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:909
c:td p:td s:td b:td l:td d:td BLOCK C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:896
c:td p:---- s:td b:td l:td d:td FINISH
c:td p:---- s:td b:td l:td d:td CFUNC :each
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:895
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:884
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:21
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:630
c:td p:td s:td b:td l:td d:td METHOD C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:634
c:td p:td s:td b:td l:tx d:tx EVAL ./test/runner.rb:15
c:td p:---- s:td b:td l:td d:td FINISH
c:td p:td s:td b:td l:tx d:tx TOP

-- Ruby level backtrace information ----------------------------------------
./test/runner.rb:15:in <main>' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:634:in run'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:630:in run' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:21:in run'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:884:in run' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:895:in _run'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:895:in each' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:896:in block in _run'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:909:in run_tests' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:746:in _run_anything'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:563:in _run_suites' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:563:in each'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit.rb:565:in block in _run_suites' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:780:in _run_suite'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:780:in map' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:787:in block in _run_suite'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/test/unit/testcase.rb:17:in run' C:/msys/1.0/home/beta/ruby-1.9.3-p194/lib/minitest/unit.rb:949:in run'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/test/dl/test_cptr.rb:81:in test_to_ptr_io' C:/msys/1.0/home/beta/ruby-1.9.3-p194/test/dl/test_cptr.rb:81:in open'
C:/msys/1.0/home/beta/ruby-1.9.3-p194/test/dl/test_cptr.rb:84:in block in test_to_ptr_io' C:/msys/1.0/home/beta/ruby-1.9.3-p194/test/dl/test_cptr.rb:84:in call'

-- C level backtrace information -------------------------------------------
C:\windows\SYSTEM32\ntdll.dll(NtWaitForSingleObject+0xa) [0x00000000772F135A]
C:\windows\system32\KERNELBASE.dll(WaitForSingleObjectEx+0x9c) [0x000007FEFDA410DC]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_bugreport+0xa4) [0x00000000614AA334]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_name_err_mesg_new+0x6eb) [0x000000006137F8AB]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_bug+0x46) [0x0000000061380756]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_check_safe_str+0x1b4) [0x0000000061437964]
[0x0000000000401A75]
C:\windows\SYSTEM32\ntdll.dll(_C_specific_handler+0x9c) [0x00000000772B85A8]
C:\windows\SYSTEM32\ntdll.dll(RtlDecodePointer+0xbd) [0x00000000772C9D0D]
C:\windows\SYSTEM32\ntdll.dll(RtlUnwindEx+0xbbf) [0x00000000772B91AF]
C:\windows\SYSTEM32\ntdll.dll(KiUserExceptionDispatcher+0x2e) [0x00000000772F1278]
C:\windows\SYSTEM32\ntdll.dll(RtlEnterCriticalSection+0x6) [0x00000000772F2FC6]
C:\windows\system32\msvcrt.dll(pow+0x733e) [0x000007FEFDF7D0BE]
C:\windows\system32\msvcrt.dll(fputws+0x3d7) [0x000007FEFDFBC683]
C:\windows\system32\msvcrt.dll(fread+0x18) [0x000007FEFDFBC6E8]
[0x00000000623C3AF1]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_call+0x8cc) [0x00000000614A588C]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x209a) [0x000000006149D82A]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x5135) [0x00000000614A08C5]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_yield+0x155) [0x00000000614A7025]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_ensure+0xd3) [0x0000000061387F03]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_call+0x8cc) [0x00000000614A588C]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x209a) [0x000000006149D82A]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x5135) [0x00000000614A08C5]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_yield+0x155) [0x00000000614A7025]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_ary_concat+0xbed) [0x000000006134D4BD]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_call+0x8cc) [0x00000000614A588C]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x209a) [0x000000006149D82A]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x5135) [0x00000000614A08C5]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_yield+0x155) [0x00000000614A7025]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_ary_each+0x51) [0x00000000613464B1]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_call+0x8cc) [0x00000000614A588C]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x209a) [0x000000006149D82A]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x5135) [0x00000000614A08C5]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_yield+0x155) [0x00000000614A7025]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_ary_each+0x51) [0x00000000613464B1]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_call+0x8cc) [0x00000000614A588C]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x209a) [0x000000006149D82A]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x5135) [0x00000000614A08C5]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_iseq_eval_main+0xac) [0x00000000614A7A7C]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(rb_check_frozen+0x2cf7) [0x00000000613850E7]
C:\msys\1.0\home\beta\ruby-1.9.3-p194\x64-msvcrt-ruby191.dll(ruby_run_node+0x44) [0x0000000061387704]
[0x0000000000402D07]
[0x00000000004013C9]
[0x00000000004014E8]
C:\windows\system32\kernel32.dll(BaseThreadInitThunk+0xd) [0x0000000076BD652D]

-- Other runtime information -----------------------------------------------

  • Loaded script: ./test/runner.rb

Updated by usa (Usaku NAKAMURA) about 12 years ago

You must use ext/fiddle (= libffi wrapper) on Win64.

Updated by raylinn@gmail.com (ray linn) about 12 years ago

Yes, My target is to provide the most compatiable ruby binray of Windows. Most Ruby ext include fiddle,syslog has been compiled except pty. and the test result of fiddel is zero error, as following:

$ make test-all TESTS='fiddle'
./miniruby.exe -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --
disable-gems "./test/runner.rb" --ruby="./miniruby.exe -I./lib -I. -I.ext/common
./tool/runruby.rb --extout=.ext -- --disable-gems" fiddle
Run options: "--ruby=./miniruby.exe -I./lib -I. -I.ext/common ./tool/runruby.rb
--extout=.ext -- --disable-gems"

Running tests:

.......................

Finished tests in 0.020000s, 1150.0000 tests/s, 3400.0000 assertions/s.

23 tests, 68 assertions, 0 failures, 0 errors, 0 skips

Updated by usa (Usaku NAKAMURA) about 12 years ago

Hello,

In message "[ruby-core:44640] [ruby-trunk - Bug #6364] Segmentation fault happend when running test_cptr.rb"
on Apr.26,2012 14:15:30, wrote:

Yes, My target is to provide the most compatiable ruby binray of Windows. Most Ruby ext include fiddle,syslog has been compiled except pty. and the test result of fiddel is zero error, as following:

Oh, sorry, I'd misunderstood.

OK, make minimum reproduce case.
What does this script output?

-- cut here --
require "dl"
require "rbconfig"
libc_so = libm_so = RbConfig::CONFIG["RUBY_SO_NAME"].split(/-/).find{|e| /^msvc/ =~ e} + ".dll"

p DL.fiddle?

open(FILE) do |f|
p buf = DL::CPtr.malloc(10)
p fp = DL::CPtr.to_ptr(f)
p fread = DL::CFunc.new(DL.dlopen(libc_so)['fread'], DL::TYPE_VOID, 'fread')
p fread.([buf.to_i, 1, buf.size - 1, fp.to_i])
p buf.to_s
end
-- cut here --

Regards,

U.Nakamura

Updated by raylinn@gmail.com (ray linn) about 12 years ago

Here is the log. I wrote a small C to invoke the fread within msvcrt.dll via libffi, but it works fine.

$ ruby rubyffi2.rb
true
#<DL::CPtr:0x00000002c5a430 ptr=0x00000002c5a370 size=10 free=0x00000000000000>
#<DL::CPtr:0x00000002c5a450 ptr=0x0007fefdff2b10 size=0 free=0x00000000000000>
#<DL::CFunc:0x00000002be9600 ptr=0x0007fefdfbc6d0 type=0 name='fread'>
rubyffi2.rb:13: [BUG] Segmentation fault
ruby 1.9.3p0 (2011-10-30) [x64-mingw32]

-- Control frame information -----------------------------------------------
c:td p:---- s:td b:td l:td d:td CFUNC :call
c:td p:td s:td b:td l:tx d:td BLOCK rubyffi2.rb:13
c:td p:---- s:td b:td l:td d:td FINISH
c:td p:---- s:td b:td l:td d:td CFUNC :open
c:td p:td s:td b:td l:tx d:tx EVAL rubyffi2.rb:9
c:td p:---- s:td b:td l:td d:td FINISH
c:td p:td s:td b:td l:tx d:tx TOP

-- Ruby level backtrace information ----------------------------------------
rubyffi2.rb:9:in <main>' rubyffi2.rb:9:in open'
rubyffi2.rb:13:in block in <main>' rubyffi2.rb:13:in call'

-- C level backtrace information -------------------------------------------
C:\windows\SYSTEM32\ntdll.dll(NtWaitForSingleObject+0xa) [0x00000000772F135A]
C:\windows\system32\KERNELBASE.dll(WaitForSingleObjectEx+0x9c) [0x000007FEFDA41
DC]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_vm_bugreport+0x10a) [0x000000006149715A

c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_name_err_mesg_new+0x68a) [0x00000000613
B02A]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_bug+0x4a) [0x000000006137BDDA]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_check_safe_str+0x194) [0x00000000614292
4]
[0x0000000000401A95]
C:\windows\SYSTEM32\ntdll.dll(_C_specific_handler+0x9c) [0x00000000772B85A8]
C:\windows\SYSTEM32\ntdll.dll(RtlDecodePointer+0xbd) [0x00000000772C9D0D]
C:\windows\SYSTEM32\ntdll.dll(RtlUnwindEx+0xbbf) [0x00000000772B91AF]
C:\windows\SYSTEM32\ntdll.dll(KiUserExceptionDispatcher+0x2e) [0x00000000772F12
8]
C:\windows\SYSTEM32\ntdll.dll(RtlEnterCriticalSection+0x6) [0x00000000772F2FC6]
C:\windows\system32\msvcrt.dll(pow+0x733e) [0x000007FEFDF7D0BE]
C:\windows\system32\msvcrt.dll(fputws+0x3d7) [0x000007FEFDFBC683]
C:\windows\system32\msvcrt.dll(fread+0x18) [0x000007FEFDFBC6E8]
[0x00000000623C384A]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_vm_call+0x2eb) [0x000000006149325B]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x1e67) [0x000000006
488617]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x7323) [0x000000006
48DAD3]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_yield+0x54) [0x0000000061493C74]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_ensure+0xd0) [0x00000000613812E0]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_vm_call+0x2eb) [0x000000006149325B]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x1e67) [0x000000006
488617]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_vm_localjump_error+0x7323) [0x000000006
48DAD3]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_iseq_eval_main+0xb1) [0x00000000614947D
]
c:\ruby64\bin\x64-msvcrt-ruby191.dll(rb_check_frozen+0xe4c) [0x000000006137E5CC

c:\ruby64\bin\x64-msvcrt-ruby191.dll(ruby_run_node+0x4d) [0x0000000061380ABD]
[0x0000000000402CB7]
[0x00000000004013CE]
[0x00000000004014E8]
C:\windows\system32\kernel32.dll(BaseThreadInitThunk+0xd) [0x0000000076BD652D]

-- Other runtime information -----------------------------------------------

  • Loaded script: rubyffi2.rb

  • Loaded features:

    0 enumerator.so
    1 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/enc/encdb.so
    2 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/enc/gbk.so
    3 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/enc/trans/transdb.so
    4 c:/ruby64/lib/ruby/1.9.1/rubygems/defaults.rb
    5 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/rbconfig.rb
    6 c:/ruby64/lib/ruby/1.9.1/rubygems/deprecate.rb
    7 c:/ruby64/lib/ruby/1.9.1/rubygems/exceptions.rb
    8 c:/ruby64/lib/ruby/1.9.1/rubygems/custom_require.rb
    9 c:/ruby64/lib/ruby/1.9.1/rubygems.rb
    10 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/dl.so
    11 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/fiddle.so
    12 c:/ruby64/lib/ruby/1.9.1/fiddle/function.rb
    13 c:/ruby64/lib/ruby/1.9.1/fiddle/closure.rb
    14 c:/ruby64/lib/ruby/1.9.1/fiddle.rb
    15 c:/ruby64/lib/ruby/1.9.1/dl.rb
    16 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/enc/utf_16le.so
    17 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/enc/trans/single_byte.so
    18 c:/ruby64/lib/ruby/1.9.1/x64-mingw32/enc/trans/utf_16_32.so

Updated by raylinn@gmail.com (ray linn) about 12 years ago

it is this line cause the Segmentation fault.

p fread.([buf.to_i, 1, buf.size - 1, fp.to_i])

The declaretion of fread is size_t fread(void*,size_t,size_t,FILE*), in 64bit GCC, size_t size is 8, so ffi type should be POINTER and UINT64. Change UINT64 to UINT32 will cause system crash

Updated by mame (Yusuke Endoh) about 12 years ago

  • Status changed from Open to Assigned
  • Assignee set to usa (Usaku NAKAMURA)

Usa-san, may I assign this to you?
If not, please reassign to Aaron who is a maintainer of dl.
I guess he will say "WONTFIX, use fiddle instead," though.

--

Yusuke Endoh

Actions #7

Updated by usa (Usaku NAKAMURA) about 12 years ago

  • Status changed from Assigned to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r35485.
ray, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


Updated by usa (Usaku NAKAMURA) about 12 years ago

Hello,

In message "[ruby-core:44651] [ruby-trunk - Bug #6364] Segmentation fault happend when running test_cptr.rb"
on Apr.26,2012 23:41:32, wrote:

Here is the log. I wrote a small C to invoke the fread within msvcrt.dll via libffi, but it works fine.

Thank you!
I've finally gotten the solution of this problem.

There are many traps.

1st, yes, DL is replaced when fiddle is available, but it is not so
about DL::CPtr and DL::CFunc.

2nd, with MSVCR100.dll, this problem did not occur.
I tested with x64-mswin64_100, so I could not reproduce.
So I thought that this is peculiar to mingw, but it was because the
difference between versions of MSVCRT.

The cause was passing a wrong value as the file pointer.
On most platforms Ruby supports, a pointer has same width as unsigned
long.
It is known well that the almost only one exception is Win64.
When DL::CFunc converts DL::CPtr to C pointer, DL::CFunc used
rb_big2ulong_pack().
On Win64 it means ommiting higher 32bits.
But since Win64 mostly uses the domain of 32 bits, this problem did not
actualize.

Regards,

U.Nakamura

Updated by raylinn@gmail.com (ray linn) about 12 years ago

Win32 use LP32 data modle and Win64 use LLP64 data model. LP32 means long & pointer is 4bytes, LLP64 means long long & pointer is 8bytes. some widely used types like size_t, time_t, and ptrdiff_t are also 8bytes within Win64.

I tested the patch, it is ok now.

Thanks a lot for the hardwork.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0