jarmo / RAutomation

RAutomation
MIT License
100 stars 33 forks source link

Seg fault with ms_uia adapter #81

Closed AArmada closed 10 years ago

AArmada commented 10 years ago

When I try to check if a window exists using the ms_uia adapter, ruby crashes with a seg fault. Example

irb(main):001:0> require 'rautomation'
=> true
irb(main):002:0> win = RAutomation::Window.new(:title => /Notepad/, :adapter => :ms_uia)
=> #<RAutomation::Window:0x26381b8 @adapter=:ms_uia, @window=#<RAutomation::Adapter::MsUia::Window:0
x26cf820 @container=#<RAutomation::Window:0x26381b8 ...>, @locators={:index=>0, :title=>/Notepad/}>>

irb(main):003:0> win.exists?
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/functions.rb:2
66: [BUG] Segmentation fault
ruby 1.9.3p448 (2013-06-27) [i386-mingw32]

-- Control frame information -----------------------------------------------
c:0029 p:---- s:0108 b:0108 l:000107 d:000107 CFUNC  :enum_windows
c:0028 p:0080 s:0103 b:0103 l:001fc0 d:001fc0 METHOD C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation
-0.13.0/lib/rautomation/adapter/ms_uia/functions.rb:266
c:0027 p:0013 s:0095 b:0095 l:001fd8 d:001fd8 METHOD C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation
-0.13.0/lib/rautomation/adapter/ms_uia/functions.rb:112
c:0026 p:0034 s:0091 b:0091 l:000090 d:000090 METHOD C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation
-0.13.0/lib/rautomation/adapter/ms_uia/window.rb:39
c:0025 p:0011 s:0088 b:0088 l:000087 d:000087 METHOD C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation
-0.13.0/lib/rautomation/adapter/ms_uia/window.rb:84
c:0024 p:0013 s:0085 b:0085 l:000084 d:000084 METHOD C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation
-0.13.0/lib/rautomation/window.rb:138
c:0023 p:0011 s:0082 b:0082 l:0003ac d:000081 EVAL   (irb):3
c:0022 p:---- s:0080 b:0080 l:000079 d:000079 FINISH
c:0021 p:---- s:0078 b:0078 l:000077 d:000077 CFUNC  :eval
c:0020 p:0028 s:0071 b:0071 l:000070 d:000070 METHOD C:/Ruby193/lib/ruby/1.9.1/irb/workspace.rb:80
c:0019 p:0033 s:0064 b:0063 l:000062 d:000062 METHOD C:/Ruby193/lib/ruby/1.9.1/irb/context.rb:254
c:0018 p:0031 s:0058 b:0058 l:0003ec d:000057 BLOCK  C:/Ruby193/lib/ruby/1.9.1/irb.rb:159
c:0017 p:0042 s:0050 b:0050 l:000049 d:000049 METHOD C:/Ruby193/lib/ruby/1.9.1/irb.rb:273
c:0016 p:0011 s:0045 b:0045 l:0003ec d:000044 BLOCK  C:/Ruby193/lib/ruby/1.9.1/irb.rb:156
c:0015 p:0144 s:0041 b:0041 l:000024 d:000040 BLOCK  C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb:243
c:0014 p:---- s:0038 b:0038 l:000037 d:000037 FINISH
c:0013 p:---- s:0036 b:0036 l:000035 d:000035 CFUNC  :loop
c:0012 p:0009 s:0033 b:0033 l:000024 d:000032 BLOCK  C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb:229
c:0011 p:---- s:0031 b:0031 l:000030 d:000030 FINISH
c:0010 p:---- s:0029 b:0029 l:000028 d:000028 CFUNC  :catch
c:0009 p:0023 s:0025 b:0025 l:000024 d:000024 METHOD C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb:228
c:0008 p:0046 s:0022 b:0022 l:0003ec d:0003ec METHOD C:/Ruby193/lib/ruby/1.9.1/irb.rb:155
c:0007 p:0011 s:0019 b:0019 l:000454 d:000018 BLOCK  C:/Ruby193/lib/ruby/1.9.1/irb.rb:70
c:0006 p:---- s:0017 b:0017 l:000016 d:000016 FINISH
c:0005 p:---- s:0015 b:0015 l:000014 d:000014 CFUNC  :catch
c:0004 p:0183 s:0011 b:0011 l:000454 d:000454 METHOD C:/Ruby193/lib/ruby/1.9.1/irb.rb:69
c:0003 p:0039 s:0006 b:0006 l:000874 d:0006ac EVAL   C:/Ruby193/bin/irb:12
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:000874 d:000874 TOP

-- Ruby level backtrace information ----------------------------------------
C:/Ruby193/bin/irb:12:in `<main>'
C:/Ruby193/lib/ruby/1.9.1/irb.rb:69:in `start'
C:/Ruby193/lib/ruby/1.9.1/irb.rb:69:in `catch'
C:/Ruby193/lib/ruby/1.9.1/irb.rb:70:in `block in start'
C:/Ruby193/lib/ruby/1.9.1/irb.rb:155:in `eval_input'
C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in `each_top_level_statement'
C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb:228:in `catch'
C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `block in each_top_level_statement'
C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb:229:in `loop'
C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb:243:in `block (2 levels) in each_top_level_statement'
C:/Ruby193/lib/ruby/1.9.1/irb.rb:156:in `block in eval_input'
C:/Ruby193/lib/ruby/1.9.1/irb.rb:273:in `signal_status'
C:/Ruby193/lib/ruby/1.9.1/irb.rb:159:in `block (2 levels) in eval_input'
C:/Ruby193/lib/ruby/1.9.1/irb/context.rb:254:in `evaluate'
C:/Ruby193/lib/ruby/1.9.1/irb/workspace.rb:80:in `evaluate'
C:/Ruby193/lib/ruby/1.9.1/irb/workspace.rb:80:in `eval'
(irb):3:in `irb_binding'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/window.rb:138:in `exists?'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/window.rb:84:i
n `exists?'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/window.rb:39:i
n `hwnd'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/functions.rb:1
12:in `window_hwnd'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/functions.rb:2
66:in `find_hwnd'
C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/functions.rb:2
66:in `enum_windows'

-- C level backtrace information -------------------------------------------
C:\Windows\SysWOW64\ntdll.dll(ZwWaitForSingleObject+0x15) [0x775bf8d1]
C:\Windows\syswow64\kernel32.dll(WaitForSingleObjectEx+0x43) [0x75bf1194]
C:\Windows\syswow64\kernel32.dll(WaitForSingleObject+0x12) [0x75bf1148]
C:\Ruby193\bin\msvcrt-ruby191.dll(rb_vm_bugreport+0xf9) [0x62e5bec5]
C:\Ruby193\bin\msvcrt-ruby191.dll(rb_name_err_mesg_new+0x17a) [0x62d3a87a]
C:\Ruby193\bin\msvcrt-ruby191.dll(rb_bug+0x2f) [0x62d3b557]
C:\Ruby193\bin\msvcrt-ruby191.dll(rb_check_safe_str+0x194) [0x62dee898]
 [0x004011e6]
C:\Windows\syswow64\kernel32.dll(GetProfileStringW+0x12aaf) [0x75c2fffb]
C:\Windows\SysWOW64\ntdll.dll(RtlKnownExceptionFilter+0xb7) [0x776174ff]

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

* Loaded script: irb

* Loaded features:

    0 enumerator.so
    1 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/encdb.so
    2 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/iso_8859_1.so
    3 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/trans/transdb.so
    4 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/defaults.rb
    5 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/rbconfig.rb
    6 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/deprecate.rb
    7 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/exceptions.rb
    8 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/defaults/operating_system.rb
    9 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb
   10 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems.rb
   11 C:/Ruby193/lib/ruby/1.9.1/e2mmap.rb
   12 C:/Ruby193/lib/ruby/1.9.1/irb/init.rb
   13 C:/Ruby193/lib/ruby/1.9.1/irb/workspace.rb
   14 C:/Ruby193/lib/ruby/1.9.1/irb/inspector.rb
   15 C:/Ruby193/lib/ruby/1.9.1/irb/context.rb
   16 C:/Ruby193/lib/ruby/1.9.1/irb/extend-command.rb
   17 C:/Ruby193/lib/ruby/1.9.1/irb/output-method.rb
   18 C:/Ruby193/lib/ruby/1.9.1/irb/notifier.rb
   19 C:/Ruby193/lib/ruby/1.9.1/irb/slex.rb
   20 C:/Ruby193/lib/ruby/1.9.1/irb/ruby-token.rb
   21 C:/Ruby193/lib/ruby/1.9.1/irb/ruby-lex.rb
   22 C:/Ruby193/lib/ruby/1.9.1/irb/src_encoding.rb
   23 C:/Ruby193/lib/ruby/1.9.1/irb/magic-file.rb
   24 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/euc_jp.so
   25 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/shift_jis.so
   26 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/etc.so
   27 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/dl.so
   28 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/fiddle.so
   29 C:/Ruby193/lib/ruby/1.9.1/fiddle/function.rb
   30 C:/Ruby193/lib/ruby/1.9.1/fiddle/closure.rb
   31 C:/Ruby193/lib/ruby/1.9.1/fiddle.rb
   32 C:/Ruby193/lib/ruby/1.9.1/dl.rb
   33 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rbreadline.rb
   34 C:/Ruby193/lib/ruby/site_ruby/1.9.1/readline.rb
   35 C:/Ruby193/lib/ruby/1.9.1/irb/input-method.rb
   36 C:/Ruby193/lib/ruby/1.9.1/irb/locale.rb
   37 C:/Ruby193/lib/ruby/1.9.1/irb.rb
   38 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/utf_16le.so
   39 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/trans/single_byte.so
   40 C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/trans/utf_16_32.so
   41 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/version.rb
   42 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/requirement.rb
   43 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/platform.rb
   44 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb
   45 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/path_support.rb
   46 C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb
   47 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/wait_helper.rb
   48 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/helper.rb
   49 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/button.rb
   50 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb
   51 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/element_collections.rb
   52 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/window.rb
   53 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation.rb
   54 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/1.9/ffi_c.so
   55 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/platform.rb
   56 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/types.rb
   57 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/library.rb
   58 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/errno.rb
   59 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/pointer.rb
   60 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/memorypointer.rb
   61 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/struct_layout_builder.rb
   62 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/struct.rb
   63 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/union.rb
   64 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/managedstruct.rb
   65 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/callback.rb
   66 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/io.rb
   67 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/autopointer.rb
   68 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/variadic.rb
   69 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/enum.rb
   70 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi/ffi.rb
   71 C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.3-x86-mingw32/lib/ffi.rb
   72 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/constant
s.rb
   73 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/keys.rb
   74 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/keystrok
e_converter.rb
   75 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/function
s.rb
   76 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/locators
.rb
   77 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/window.r
b
   78 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/button_h
elper.rb
   79 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/control.
rb
   80 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/value_co
ntrol.rb
   81 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/button.r
b
   82 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/checkbox
.rb
   83 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/menu.rb
   84 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/radio.rb

   85 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/text_fie
ld.rb
   86 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/select_l
ist.rb
   87 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/spinner.
rb
   88 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/table.rb

   89 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/tab_cont
rol.rb
   90 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/label.rb

   91 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/list_box
.rb
   92 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/list_ite
m.rb
   93 C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia.rb

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Using ruby 1.9.3p448 (2013-06-27) [i386-mingw32] on Win7x64

leviwilson commented 10 years ago

This is the same issue as #80. Please see my comment there.

AArmada commented 10 years ago

Downgrading to FFI 1.9.0 fixed the seg fault issue, but now when I try to use a window I get a LoadError when it tries to use the DLL.

C:\Users\Administrator>irb
irb(main):001:0> require 'rautomation'
=> true
irb(main):002:0> win=RAutomation::Window.new(title: /Notepad/, :adapter => :ms_uia)
=> #<RAutomation::Window:0x27456a8 @adapter=:ms_uia, @window=#<RAutomation::Adapter::MsUia::Window:0
x263ed40 @container=#<RAutomation::Window:0x27456a8 ...>, @locators={:index=>0, :title=>/Notepad/}>>

irb(main):003:0> win.exists?
=> true
irb(main):004:0> win.text_field(class: "Edit").set "Hello"
LoadError: Could not open library 'C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautom
ation/adapter/ms_uia/../../../../ext/UiaDll/Release/UiaDll.dll': The specified module could not be f
ound.

        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.0-x86-mingw32/lib/ffi/library.rb:123:in `block in ffi_lib'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.0-x86-mingw32/lib/ffi/library.rb:90:in `map'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.0-x86-mingw32/lib/ffi/library.rb:90:in `ffi_lib'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:116:in `<module:UiaDll>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:7:in `<module:MsUia>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:6:in `<module:Adapter>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:5:in `<module:RAutomation>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:4:in `<top (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/control.rb:59:in `exist?'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/text_field.rb:31:in `exist?'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb:37:in `exists?'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb:55:in `block in wait_until_exists'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/wait_helper.rb:15:in `wait_until'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb:55:in `wait_until_exists'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb:15:in `set'
        from (irb):4
        from C:/Ruby193/bin/irb:12:in `<main>'irb(main):005:0>
leviwilson commented 10 years ago

You have to install the VS 2010 C++ Runtime On Nov 19, 2013 3:03 PM, "AArmada" notifications@github.com wrote:

Downgrading to FFI 1.9.0 fixed the seg fault issue, but now when I try to use a window I get a LoadError when it tries to use the DLL.

C:\Users\Administrator>irb irb(main):001:0> require 'rautomation' => true irb(main):002:0> win=RAutomation::Window.new(title: /Notepad/, :adapter => :ms_uia) => #<RAutomation::Window:0x27456a8 @adapter=:ms_uia, @window=#<RAutomation::Adapter::MsUia::Window:0 x263ed40 @container=#<RAutomation::Window:0x27456a8 ...>, @locators={:index=>0, :title=>/Notepad/}>>

irb(main):003:0> win.exists? => true irb(main):004:0> win.text_field(class: "Edit").set "Hello" LoadError: Could not open library 'C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautom ation/adapter/ms_uia/../../../../ext/UiaDll/Release/UiaDll.dll': The specified module could not be f ound.

    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.0-x86-mingw32/lib/ffi/library.rb:123:in `block in ffi_lib'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.0-x86-mingw32/lib/ffi/library.rb:90:in `map'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ffi-1.9.0-x86-mingw32/lib/ffi/library.rb:90:in `ffi_lib'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:116:in `<module:UiaDll>'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:7:in `<module:MsUia>'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:6:in `<module:Adapter>'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:5:in `<module:RAutomation>'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/uia_dll.rb:4:in `<top (required)>'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/control.rb:59:in `exist?'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/adapter/ms_uia/text_field.rb:31:in `exist?'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb:37:in `exists?'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb:55:in `block in wait_until_exists'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/wait_helper.rb:15:in `wait_until'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb:55:in `wait_until_exists'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rautomation-0.13.0/lib/rautomation/text_field.rb:15:in `set'
    from (irb):4
    from C:/Ruby193/bin/irb:12:in `<main>'irb(main):005:0>

— Reply to this email directly or view it on GitHubhttps://github.com/jarmo/RAutomation/issues/81#issuecomment-28827463 .

AArmada commented 10 years ago

That fixed it. Thanks for your help.

leviwilson commented 10 years ago

This is still an issue. @jarmo do you have anything against locking ffi to 1.9.0 in lieu of this issue?

jarmo commented 10 years ago

Just released 0.14.1. Thanks for reminding me about this issue!

Closing this issue too. If new version of ffi will be released in the future without this problem then we can loosen up the dependency.

jarmo commented 9 years ago

Dependency version of ffi has been loosened up in 0.16.0 (14ef0484c14b1ea121a435fb5b2406807747634c)