Bug #2618

Win32OLE RuntimeError due CoInitialize not being called

Added by Luis Lavena over 4 years ago. Updated over 1 year ago.

[ruby-core:27634]
Status:Closed
Priority:Normal
Assignee:Masaki Suketa
Category:-
Target version:-
ruby -v:ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mingw32] Backport:

Description

=begin
A user reported to Ruby-Talk and RubyInstaller mailing list some issues using ruby 1.9.1p243 (2009-07-16 revision 24175) [i386-mingw32]

http://groups.google.com/group/rubyinstaller/browse_thread/thread/e5e47aabf09aff98

I could reproduce the issue across multiple versions of 1.9.1 and with close-up-to-date version of 1.9.2dev:

http://groups.google.com/group/rubyinstaller/msg/dae727305e57ba6d

Simple test script:
http://pastie.org/786354

require 'win32ole'

t = Thread.new do
begin
ie = WIN32OLE.new( "InternetExplorer.Application" )
ie.visible = true
ie.navigate( "http://google.com" )
puts "OK"
rescue Exception => e
puts e.class
puts e
puts e.backtrace
end
end

t.join

Generates this:

ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mingw32]

WIN32OLERuntimeError
failed to create WIN32OLE object from InternetExplorer.Application'
HRESULT error code:0x800401f0
CoInitialize has not been called.
t.rb:5:in
initialize'
t.rb:5:in new'
t.rb:5:in
block in '

ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mswin32]

WIN32OLERuntimeError
failed to create WIN32OLE object from InternetExplorer.Application'
HRESULT error code:0x800401f0
CoInitialize has not been called.
t.rb:5:in
initialize'
t.rb:5:in new'
t.rb:5:in
block in '

ruby 1.9.2dev (2010-01-02 trunk 26229) [i386-mingw32]

WIN32OLERuntimeError
failed to create WIN32OLE object from InternetExplorer.Application'
HRESULT error code:0x800401f0
CoInitialize has not been called.
t.rb:5:in
initialize'
t.rb:5:in new'
t.rb:5:in
block in '

Both mswin32 and mingw32 generates the same issue.
=end


Related issues

Related to ruby-trunk - Bug #7681: Flip-flop test failure under MinGW Closed 01/11/2013

Associated revisions

Revision 38867
Added by Nobuyoshi Nakada over 1 year ago

win32ole: OLE initialize per threads

  • ext/win32ole/win32ole.c (ole_initialize): initialize OLE for each threads. [Bug #2618]

Revision 38868
Added by Nobuyoshi Nakada over 1 year ago

win32ole: OLE uninitialize

  • ext/win32ole/win32ole.c (ole_initialize): uninitialize OLE at thread ends. [Bug #2618]

Revision 38869
Added by Nobuyoshi Nakada over 1 year ago

win32ole: remove win32ole.rb

  • ext/win32ole/lib/win32ole.rb: no longer used. [Bug #2618]

History

#1 Updated by Usaku NAKAMURA over 4 years ago

  • Status changed from Open to Assigned
  • Assignee set to Masaki Suketa

=begin

=end

#2 Updated by Masaki Suketa about 4 years ago

=begin
Could you try ruby 1.9.2dev (2010-01-23 trunk 26383)?
I'm not sure fix this issue or not, but the script
works fine in my Windows XP.
I have tested cygwin ruby and mswin32 ruby.
=end

#3 Updated by Roger Pack about 4 years ago

=begin
working all right for me with
ruby 1.9.2dev (2010-01-25 trunk 26409) [i386-mingw32]

(fails with ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mingw32])
=end

#5 Updated by Nobuyoshi Nakada over 1 year ago

  • Tracker changed from Backport to Bug
  • Project changed from Backport191 to ruby-trunk
  • Status changed from Assigned to Open

#6 Updated by Nobuyoshi Nakada over 1 year ago

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

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


win32ole: OLE initialize per threads

  • ext/win32ole/win32ole.c (ole_initialize): initialize OLE for each threads. [Bug #2618]

#7 Updated by Nobuyoshi Nakada over 1 year ago

  • Description updated (diff)
  • Status changed from Closed to Open
  • % Done changed from 100 to 50

#8 Updated by Nobuyoshi Nakada over 1 year ago

  • Status changed from Open to Closed
  • % Done changed from 50 to 100

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


win32ole: OLE uninitialize

  • ext/win32ole/win32ole.c (ole_initialize): uninitialize OLE at thread ends. [Bug #2618]

Also available in: Atom PDF