Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Hudson-ci/Troubleshooting DCOM Slaves"

 
Line 1: Line 1:
 
{{hudson|pageTitle=Windows slaves fail to start via DCOM}}  
 
{{hudson|pageTitle=Windows slaves fail to start via DCOM}}  
 +
 +
__NOTOC__
  
 
If you chose "Let Hudson control this Windows slave as a Windows service" for connecting to slave, you may get an error message like this:  
 
If you chose "Let Hudson control this Windows slave as a Windows service" for connecting to slave, you may get an error message like this:  
Line 41: Line 43:
  
 
*Linux/UNIX:*
 
*Linux/UNIX:*
 
+
<pre>tcpdump -n -i &lt;IF&gt; -s 1500 port not 22 and host &lt;HOST-IP&gt;  
<pre>
+
tcpdump -n -i &lt;IF&gt; -s 1500 port not 22 and host &lt;HOST-IP&gt;  
+
  
 
&lt;IF&gt; the network interface name, e.g. eth1
 
&lt;IF&gt; the network interface name, e.g. eth1
 
&lt;HOST-IP&gt; the IP address of the slave
 
&lt;HOST-IP&gt; the IP address of the slave
 
</pre>  
 
</pre>  
 
+
==== Ports 139 and 445 ====
==== Ports 139 and 445 ====
+
  
 
When the Ports 139 (NetBIOS Session Service) and 445 (Windows Shares) are not available, the following error message appears:  
 
When the Ports 139 (NetBIOS Session Service) and 445 (Windows Shares) are not available, the following error message appears:  
 
+
<pre>ERROR: Message not found for errorCode: 0xC0000001 org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000001  
<pre>
+
ERROR: Message not found for errorCode: 0xC0000001 org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000001  
+
  
 
  at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121)
 
  at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121)
Line 107: Line 104:
 
  ... 10 more
 
  ... 10 more
  
</pre>
+
</pre>  
 
+
=== Local Security Settings ===
=== Local Security Settings ===
+
  
 
#Start the control panel, go to "Administrative Tools", then "Local Security Policy". This will open up the "local security settings" window  
 
#Start the control panel, go to "Administrative Tools", then "Local Security Policy". This will open up the "local security settings" window  
 
#Go to "Local Policies" &gt; "Security Options" &gt; "Network access: Sharing and security model for local accounts." Change that to "Classic."
 
#Go to "Local Policies" &gt; "Security Options" &gt; "Network access: Sharing and security model for local accounts." Change that to "Classic."
  
{{Important|Relevance|This only applies to Windows computers that are not a part of a domain ([http://technet.microsoft.com/en-us/library/cc786449(WS.10).aspx reference])}}
+
{{Important|Relevance|This only applies to Windows computers that are not a part of a domain ([http://technet.microsoft.com/en-us/library/cc786449(WS.10).aspx reference])}}  
 
+
=== Remote Registry Service ===
+
  
The Remote Registry service must be running in order to install the Hudson service, but it may be stopped on your computer.&nbsp; This is especially true for Windows Vista, where it is disabled by default.&nbsp; If it is not running, you may get an error like this:
+
=== Remote Registry Service  ===
  
<pre>
+
The Remote Registry service must be running in order to install the Hudson service, but it may be stopped on your computer.&nbsp; This is especially true for Windows Vista, where it is disabled by default.&nbsp; If it is not running, you may get an error like this:
Message not found for errorCode: 0xC0000034  
+
<pre>Message not found for errorCode: 0xC0000034  
 
  org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000034
 
  org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000034
 
   at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121)
 
   at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121)
Line 151: Line 145:
 
   ... 10 more
 
   ... 10 more
  
</pre>
+
</pre>  
 
+
 
If so, start the control panel, open "Administrative Tools," then "Services." Locate the Remote Registry service on the list, and click "Start this service."  
 
If so, start the control panel, open "Administrative Tools," then "Services." Locate the Remote Registry service on the list, and click "Start this service."  
  
Line 158: Line 151:
  
 
On Windows XP / 2003, if you see a message like this:  
 
On Windows XP / 2003, if you see a message like this:  
 
+
<pre>Installing the Hudson slave service No more data is available. [0x00000103]
<pre>
+
Installing the Hudson slave service No more data is available. [0x00000103]
+
 
  org.jinterop.dcom.common.JIException: No more data is available. [0x00000103]  
 
  org.jinterop.dcom.common.JIException: No more data is available. [0x00000103]  
 
   at org.jinterop.winreg.smb.JIWinRegStub.winreg_EnumKey(JIWinRegStub.java:390)  
 
   at org.jinterop.winreg.smb.JIWinRegStub.winreg_EnumKey(JIWinRegStub.java:390)  
Line 178: Line 169:
 
   at org.jinterop.winreg.smb.JIWinRegStub.winreg_EnumKey(JIWinRegStub.java:386)  
 
   at org.jinterop.winreg.smb.JIWinRegStub.winreg_EnumKey(JIWinRegStub.java:386)  
 
   ... 8 more  
 
   ... 8 more  
</pre>
+
</pre>  
 
Then try upgrading .NET framework to ver 3.5SP1.  
 
Then try upgrading .NET framework to ver 3.5SP1.  
  
 
Taken from [http://n4.nabble.com/exception-when-winxp-slaves-launch-No-more-data-is-available-0x00000103-td386006.html]  
 
Taken from [http://n4.nabble.com/exception-when-winxp-slaves-launch-No-more-data-is-available-0x00000103-td386006.html]  
  
=== Tip from Florian Vogle (June 2011) ===
+
=== Tip from Florian Vogle (June 2011) ===
  
 
I'm using Windows Server 2008 R2 Standard (Service Pack 1, 64-bit) in our environment. Creation of windows slaves with "Let Hudson control this Windows slave as a Windows service" failed.  
 
I'm using Windows Server 2008 R2 Standard (Service Pack 1, 64-bit) in our environment. Creation of windows slaves with "Let Hudson control this Windows slave as a Windows service" failed.  
Line 201: Line 192:
 
#Restart Remote Registry Service
 
#Restart Remote Registry Service
  
=== If all else fails... ===
+
=== If all else fails... ===
  
 
Please file an issue about the problem with the stack trace, with information like Windows versions, so that we can take a look.
 
Please file an issue about the problem with the stack trace, with information like Windows versions, so that we can take a look.

Latest revision as of 14:17, 31 August 2011

Hudson Continuous Integration Server
Website
Download
Community
Mailing ListForumsIRCmattermost
Issues
OpenHelp WantedBug Day
Contribute
Browse Source
Hudson-bust.png Windows slaves fail to start via DCOM












If you chose "Let Hudson control this Windows slave as a Windows service" for connecting to slave, you may get an error message like this:

Access is denied. [0x00000005]
	at org.jinterop.dcom.core.JIComServer.init(JIComServer.java:542)
	at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:458)
	at org.jinterop.dcom.core.JIComServer.<init>(JIComServer.java:427)
	at org.jvnet.hudson.wmi.WMI.connect(WMI.java:41)
	at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:107)
	at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:170)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: rpc.FaultException: Received fault. (unknown)
	at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:142)
	at rpc.Stub.call(Stub.java:112)
	at org.jinterop.dcom.core.JIComServer.init(JIComServer.java:538)
	... 10 more

If so, check the following settings on Windows:

Local "Administrator" group membership

Make sure that the user name you have entered is a member of the local "Administrators" group. In the default Windows installation, this group membership is required for Hudson to remotely copy files and install a service.

Firewall

By default, Windows Firewall prevents the TCP connections necessary to make this mechanism work. The firewall on the slave must allow the following exceptions (see List of TCP&UDP port numbers):

  • TCP Port 135 (DCE/RPC Locator service)
  • TCP Port 139 (NetBIOS Session Service)
  • TCP Port 445 (Windows shares)
  • C:\WINDOWS\system32\dllhost.exe (dllhost.exe seems to use a random port number)
  • C:\WINDOWS\system32\javaw.exe (Hudson also uses a random port number)
  • File and Printer sharing (TCP 139, TCP 445, UDP 137, UDP 138 (possibly only a subset of these is required))

The easiest way to track down firewall issues is to use tcpdump. Just run the following command on the Hudson server, which is trying to connect to the slave:

  • Linux/UNIX:*
tcpdump -n -i <IF> -s 1500 port not 22 and host <HOST-IP> 

<IF> the network interface name, e.g. eth1
<HOST-IP> the IP address of the slave

Ports 139 and 445

When the Ports 139 (NetBIOS Session Service) and 445 (Windows Shares) are not available, the following error message appears:

ERROR: Message not found for errorCode: 0xC0000001 org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000001 

 at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121)
 at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:479)
 at org.jinterop.dcom.core.JIComServer.<init>(JIComServer.java:427)
 at org.jvnet.hudson.wmi.WMI.connect(WMI.java:41)
 at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:137)
 at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:184)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)

Caused by: jcifs.smb.SmbException: Connection timeout jcifs.util.transport.TransportException: Connection timeout 

 at jcifs.util.transport.Transport.connect(Transport.java:178)
 at jcifs.smb.SmbTransport.connect(SmbTransport.java:294)
 at jcifs.smb.SmbTree.treeConnect(SmbTree.java:141)
 at jcifs.smb.SmbFile.doConnect(SmbFile.java:858)
 at jcifs.smb.SmbFile.connect(SmbFile.java:901)
 at jcifs.smb.SmbFile.connect0(SmbFile.java:827)
 at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:76)
 at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65)
 at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2784)
 at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:90)
 at rpc.Stub.attach(Stub.java:105)
 at rpc.Stub.call(Stub.java:109)
 at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:119)
 at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:479)
 at org.jinterop.dcom.core.JIComServer.<init>(JIComServer.java:427)
 at org.jvnet.hudson.wmi.WMI.connect(WMI.java:41)
 at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:137)
 at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:184)
 at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
 at java.util.concurrent.FutureTask.run(FutureTask.java:138)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
 at jcifs.smb.SmbTransport.connect(SmbTransport.java:296)
 at jcifs.smb.SmbTree.treeConnect(SmbTree.java:141)
 at jcifs.smb.SmbFile.doConnect(SmbFile.java:858)
 at jcifs.smb.SmbFile.connect(SmbFile.java:901)
 at jcifs.smb.SmbFile.connect0(SmbFile.java:827)
 at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:76)
 at jcifs.smb.SmbFileInputStream.<init>(SmbFileInputStream.java:65)
 at jcifs.smb.SmbFile.getInputStream(SmbFile.java:2784)
 at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:90)
 at rpc.Stub.attach(Stub.java:105)
 at rpc.Stub.call(Stub.java:109)
 at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:119)
 ... 10 more

Local Security Settings

  1. Start the control panel, go to "Administrative Tools", then "Local Security Policy". This will open up the "local security settings" window
  2. Go to "Local Policies" > "Security Options" > "Network access: Sharing and security model for local accounts." Change that to "Classic."
Important.png
Relevance
This only applies to Windows computers that are not a part of a domain (reference)


Remote Registry Service

The Remote Registry service must be running in order to install the Hudson service, but it may be stopped on your computer.  This is especially true for Windows Vista, where it is disabled by default.  If it is not running, you may get an error like this:

Message not found for errorCode: 0xC0000034 
 org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC0000034
   at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:121)
   at org.jinterop.dcom.core.JIComServer.initialise(JIComServer.java:479)
   at org.jinterop.dcom.core.JIComServer.<init>(JIComServer.java:427)
   at org.jvnet.hudson.wmi.WMI.connect(WMI.java:41)
   at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:107)
   at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:178)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
   at java.util.concurrent.FutureTask.run(FutureTask.java:166)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
   at java.lang.Thread.run(Thread.java:636)
 Caused by: jcifs.smb.SmbException: The system cannot find the file specified.
   at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:542)
   at jcifs.smb.SmbTransport.send(SmbTransport.java:644)
   at jcifs.smb.SmbSession.send(SmbSession.java:242)
   at jcifs.smb.SmbTree.send(SmbTree.java:111)
   at jcifs.smb.SmbFile.send(SmbFile.java:729)
   at jcifs.smb.SmbFile.open0(SmbFile.java:934)
   at jcifs.smb.SmbFile.open(SmbFile.java:951)
   at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:142)
   at jcifs.smb.TransactNamedPipeOutputStream.<init>(TransactNamedPipeOutputStream.java:32)
   at jcifs.smb.SmbNamedPipe.getNamedPipeOutputStream(SmbNamedPipe.java:187)
   at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:91)
   at rpc.Stub.attach(Stub.java:105)
   at rpc.Stub.call(Stub.java:109)
   at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKCR(JIWinRegStub.java:119)
   ... 10 more

If so, start the control panel, open "Administrative Tools," then "Services." Locate the Remote Registry service on the list, and click "Start this service."

.NET Framework

On Windows XP / 2003, if you see a message like this:

Installing the Hudson slave service No more data is available. [0x00000103]
 org.jinterop.dcom.common.JIException: No more data is available. [0x00000103] 
  at org.jinterop.winreg.smb.JIWinRegStub.winreg_EnumKey(JIWinRegStub.java:390) 
  at hudson.util.jna.DotNet.isInstalled(DotNet.java:81) 
  at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:117) 
  at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:180) 
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) 
  at java.util.concurrent.FutureTask.run(FutureTask.java:166) 
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
  at java.lang.Thread.run(Thread.java:636) 
Caused by: org.jinterop.dcom.common.JIRuntimeException: No more data is available. [0x00000103] 
  at org.jinterop.winreg.IJIWinReg$enumKey.read(IJIWinReg.java:762) 
  at ndr.NdrObject.decode(NdrObject.java:19) 
  at rpc.ConnectionOrientedEndpoint.call(ConnectionOrientedEndpoint.java:138) 
  at rpc.Stub.call(Stub.java:112) 
  at org.jinterop.winreg.smb.JIWinRegStub.winreg_EnumKey(JIWinRegStub.java:386) 
  ... 8 more 

Then try upgrading .NET framework to ver 3.5SP1.

Taken from [1]

Tip from Florian Vogle (June 2011)

I'm using Windows Server 2008 R2 Standard (Service Pack 1, 64-bit) in our environment. Creation of windows slaves with "Let Hudson control this Windows slave as a Windows service" failed.

This is caused by the TrustedInstaller concept of windows.

Solution I found so far:

Hudson requires full access to WBEM Scripting Locator (HKEY_CLASSES_ROOT\CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6\}). Default for administrators group is just read. Change permissions for administrators group to "Full Control".

  1. Launch 'regedit.exe' as 'Administrator'
  2. Find the following registry key: 'HKEY_CLASSES_ROOT\CLSID\{76A64158-CB41-11D1-8B02-00600806D9B6\}'
  3. Right click and select 'Permissions'
  4. Change owner to administrators group.
  5. Change permissions for administrators group. Grant Full Control.
  6. Change owner back to TrustedInstaller (user is "NT Service\TrustedInstaller")
  7. Restart Remote Registry Service

If all else fails...

Please file an issue about the problem with the stack trace, with information like Windows versions, so that we can take a look.

Back to the top