> -----Original Message-----
> From: Konstantin Kolinko [mailto:knst.koli...@gmail.com]
> Sent: Wednesday, August 29, 2012 10:56 AM
> To: Tomcat Users List
> Subject: Re: Windows Path Not Found for urandom
> 
> 2012/8/29 Jeffrey Janner <jeffrey.jan...@polydyne.com>:
> > The question is, is it something to be worried about?
> >
> >> -----Original Message-----
> >> From: Jeffrey Janner [mailto:jeffrey.jan...@polydyne.com]
> >> Sent: Tuesday, August 28, 2012 10:21 AM
> >> To: Tomcat Users List ‎[users@tomcat.apache.org]‎
> >> Subject: Windows Path Not Found for urandom
> >>
> >>  apologize for the lack of details in advance, but I don't have the
> >> specifics yet.
> >>
> >> I have a customer that is using Tomcat (6.0.33?) on Windows and are
> >> monitoring the process with SysInternals Process Monitor.
> >> About every 5 seconds, they are seeing Tomcat.exe generate a "Path
> >> Not Found" error on a QueryOpen operation for the path
> D:\dev\urandom
> >> with a duration of around 0.00002.
> >> Since the path contains urandom, I assume it has something to do
> with
> >> the SSL routines.
> >> If they followed our standard install instructions, they should be
> >> using Tomcat 6.0.33 with the native/APR libraries that come with the
> >> installer.
> >>
> 
> 1. Can you stop top-posting?
> http://en.wikipedia.org/wiki/Posting_style#Choosing_the_proper_posting_
> style
[Jeff Janner] sorry, using that POS that Microsoft calls a email tool, and I 
sometimes forget.

> 2. " Confidentiality Notice"s are self-contradictory on a publicly
> archived mailing list.
[Jeff Janner] Hopefully, I've fixed the outbound filter that applies that 
automatically.

> 
> > The question is, is it something to be worried about?
> 
> 1. I'd be worried if there were something at that path.
> 
> Would randomness of something be compromised if there were a readable
> file there?
> 
> If there is nothing there and nothing can be created there, I think it
> is not much of an issue,  though an interesting one to investigate.
> 
> 2. If the file is opened by Java classes, you might try to run with a
> SecurityManager to find what tries to open it.
> 
> 3. You might try to create a file there (empty? small? unreadable?).
> Maybe something would start to fail (with EOFException or similar), or
> will hang waiting for data (and a threaddump will show what it is).
> 
> 
> Best regards,
> Konstantin Kolinko
> 

[Jeff Janner] 
Well, in trying to answer (1. & 3.) above, I actually created the file (empty). 
 Below is what I get in the catalina.log no matter whether I have an SSL 
connector or not, and whether the SSLEngine parameter of the 
APRLifecycleListener is on or off.  Notice that it tries to read it 3 times.  I 
don't see the errors if the file is missing.  It doesn’t seem to affect 
processing at all, except that I don't get anymore errors about it anywhere, 
even the process monitor tool, after startup.  It was interesting that on 
startup with the file, process monitor reported 3 read attempts, but without 
the file, it shows 6 PATH NOT FOUND errors.  And that's before any access of 
the app.  I'm not knowledgeable enough to know if it's affecting the SSL 
encryption, but I'm beginning to think it isn't.  I didn't notice is issues, 
hangs or slowness, but it might actually affect things if the file had enough 
data to meet the minimum byte requirements for SSL's entropy requirements.

The interesting thing was, I'm not seeing the issue here with the same 
frequency that the customer is.  In testing, with the file missing, besides the 
initial 6 PNFs, I could only get them to generate when I tried to login.  On 
connection, we throw up a regular jsp with a form for login credentials (not a 
Tomcat controlled auth form - don't ask me why or get me started, the decision 
was made way back at Tomcat 4.x). If I pass login, it generates 1 PNF, if I 
fail, it generates 2.  So I'm thinking it's definitely something in our code, 
and my customer must have something trying to login every 5 seconds.

Still, there are two good academic questions about why Tomcat tries to read it 
3 times on startup, and what happens to SSL if the file exists (though I'm not 
sure the SSL code is trying to read it under Windows, since I didn't see any 
evidence during testing).

012-08-29 11:52:29 Commons Daemon procrun stderr initialized
Aug 29, 2012 11:52:29 AM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.
Aug 29, 2012 11:52:29 AM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], 
random [true].
Aug 29, 2012 11:52:29 AM org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Aug 29, 2012 11:52:29 AM org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8009
Aug 29, 2012 11:52:29 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 415 ms
Aug 29, 2012 11:52:29 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Aug 29, 2012 11:52:29 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.33
Aug 29, 2012 11:52:29 AM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor manager.xml
Aug 29, 2012 11:52:29 AM org.apache.catalina.session.ManagerBase setRandomFile
WARNING: Error reading /dev/urandom
java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:180)
        at java.io.DataInputStream.readLong(DataInputStream.java:399)
        at 
org.apache.catalina.session.ManagerBase.setRandomFile(ManagerBase.java:548)
        at 
org.apache.catalina.session.ManagerBase.getRandomBytes(ManagerBase.java:993)
        at org.apache.catalina.session.ManagerBase.init(ManagerBase.java:767)
        at 
org.apache.catalina.session.StandardManager.start(StandardManager.java:630)
        at 
org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:446)
        at 
org.apache.catalina.core.StandardContext.start(StandardContext.java:4631)
        at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at 
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
        at 
org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
        at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
        at 
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
        at 
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
        at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
        at 
org.apache.catalina.core.StandardService.start(StandardService.java:525)
        at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Aug 29, 2012 11:52:30 AM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor ROOT.xml
Aug 29, 2012 11:52:30 AM org.apache.catalina.session.ManagerBase setRandomFile
WARNING: Error reading /dev/urandom
java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:180)
        at java.io.DataInputStream.readLong(DataInputStream.java:399)
        at 
org.apache.catalina.session.ManagerBase.setRandomFile(ManagerBase.java:548)
        at 
org.apache.catalina.session.ManagerBase.getRandomBytes(ManagerBase.java:993)
        at org.apache.catalina.session.ManagerBase.init(ManagerBase.java:767)
        at 
org.apache.catalina.session.StandardManager.start(StandardManager.java:630)
        at 
org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:446)
        at 
org.apache.catalina.core.StandardContext.start(StandardContext.java:4631)
        at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at 
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
        at 
org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
        at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
        at 
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
        at 
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
        at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
        at 
org.apache.catalina.core.StandardService.start(StandardService.java:525)
        at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Aug 29, 2012 11:52:31 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
Aug 29, 2012 11:52:31 AM org.apache.catalina.session.ManagerBase setRandomFile
WARNING: Error reading /dev/urandom
java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:180)
        at java.io.DataInputStream.readLong(DataInputStream.java:399)
        at 
org.apache.catalina.session.ManagerBase.setRandomFile(ManagerBase.java:548)
        at 
org.apache.catalina.session.ManagerBase.getRandomBytes(ManagerBase.java:993)
        at org.apache.catalina.session.ManagerBase.init(ManagerBase.java:767)
        at 
org.apache.catalina.session.StandardManager.start(StandardManager.java:630)
        at 
org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:446)
        at 
org.apache.catalina.core.StandardContext.start(StandardContext.java:4631)
        at 
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
        at 
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
        at 
org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1079)
        at 
org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:1002)
        at 
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:506)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1317)
        at 
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324)
        at 
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1065)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
        at 
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
        at 
org.apache.catalina.core.StandardService.start(StandardService.java:525)
        at 
org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Aug 29, 2012 11:52:31 AM org.apache.coyote.http11.Http11AprProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Aug 29, 2012 11:52:31 AM org.apache.coyote.ajp.AjpAprProtocol start
INFO: Starting Coyote AJP/1.3 on ajp-8009
Aug 29, 2012 11:52:31 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1594 ms
Aug 29, 2012 11:58:46 AM org.apache.coyote.http11.Http11AprProtocol pause
INFO: Pausing Coyote HTTP/1.1 on http-8080
Aug 29, 2012 11:58:46 AM org.apache.coyote.ajp.AjpAprProtocol pause
INFO: Pausing Coyote AJP/1.3 on ajp-8009
Aug 29, 2012 11:58:47 AM org.apache.catalina.core.StandardService stop
INFO: Stopping service Catalina
Aug 29, 2012 11:58:48 AM org.apache.coyote.http11.Http11AprProtocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
Aug 29, 2012 11:58:48 AM org.apache.coyote.ajp.AjpAprProtocol destroy
INFO: Stopping Coyote AJP/1.3 on ajp-8009

Reply via email to