You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Dyre Tjeldvoll (JIRA)" <de...@db.apache.org> on 2005/05/26 10:41:55 UTC

[jira] Commented: (DERBY-128) Network Server Gives NPE if SQLException has null arguments (e.g. for ERROR XBM0H)

     [ http://issues.apache.org/jira/browse/DERBY-128?page=comments#action_66337 ]
     
Dyre Tjeldvoll commented on DERBY-128:
--------------------------------------

I have added a patch for this. I modified the test locally (so that directory creation fails) to reproduce the error. With the patch you still get an exception, but not the following NPE(s).

derbyall reports 4 failures but these seem to be the same as those reported at
http://www.multinet.no/~solberg/public/Apache/Derby/testlog/Linux-2.4.21-27.ELsmp_i686-i686/178510-derbyall_diff.txt
so I assume that they are not related to my change.
 
I hope that a committer can take a look at the patch. 


> Network Server Gives NPE if SQLException has null arguments   (e.g. for ERROR XBM0H)
> ------------------------------------------------------------------------------------
>
>          Key: DERBY-128
>          URL: http://issues.apache.org/jira/browse/DERBY-128
>      Project: Derby
>         Type: Bug
>   Components: Network Server
>     Versions: 10.0.2.1
>  Environment: Linux 
>     Reporter: Kathey Marsden
>     Assignee: Dyre Tjeldvoll
>     Priority: Minor
>  Attachments: derby-128.178332.diff, derby-128.178332.stat, derbyall_report.txt
>
> Network server 
>  Network Server throws an NPE because one of the arguments of the SQLException is null.  It shouldn't do so.
> To reproduce try to create a database in the root directory on Linux.  Do not run in security manager.  The trace below came from an extra '/' in the url in NSinSameJVM.java
> The issues are:
> 1)  Network Server throws an NPE because one of the arguments of the SQLException is null in this code.  It shouldn't do so.
> // arguments are variable part of a message
> 	Object[] args = ce.getArguments();
> 	for (int i = 0; args != null &&  i < args.length; i++)
> 		sqlerrmc += args[i].toString() + separator;
> 					
> 2) This exception seems to have null arguments which doesn't seem right.
>    ERROR XBM0H: Directory /NSinSameJVMTestDB cannot be created.
> ERROR XBM0H: Directory /NSinSameJVMTestDB cannot be created.
> 		 at org.apache.derby.iapi.error.StandardException.newException(StandardException.java:322)
> 		 at org.apache.derby.impl.services.monitor.PersistentServiceImpl$8.run(PersistentServiceImpl.java:668)
> 		 at java.security.AccessController.doPrivileged(Native Method)
> 		 at org.apache.derby.impl.services.monitor.PersistentServiceImpl.createServiceRoot(PersistentServiceImpl.java:632)
> 		 at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(BaseMonitor.java:1756)
> 		 at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(BaseMonitor.java:1018)
> 		 at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Monitor.java:578)
> 		 at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(EmbedConnection.java:1504)
> 		 at org.apache.derby.impl.jdbc.EmbedConnection.<init>(EmbedConnection.java:215)
> 		 at org.apache.derby.impl.jdbc.EmbedConnection20.<init>(EmbedConnection20.java:56)
> 		 at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(EmbedConnection30.java:72)
> 		 at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Driver30.java:73)
> 		 at org.apache.derby.jdbc.Driver169.connect(Driver169.java:175)
> 		 at org.apache.derby.impl.drda.Database.makeConnection(Database.java:245)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.getConnFromDatabaseName(DRDAConnThread.java:1160)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.verifyUserIdPassword(DRDAConnThread.java:1138)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.parseSECCHK(DRDAConnThread.java:2613)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1001)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.exchangeServerAttributes(DRDAConnThread.java:950)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.sessionInitialState(DRDAConnThread.java:563)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:219)
> Cleanup action completed
> 2005-01-21 01:12:12.794 GMT Thread[DRDAConnThread_2,5,derby.daemons] (DATABASE = /NSinSameJVMTestDB), (DRDAID = {2}), Failed to create database '/NSinSameJVMTestDB', see the next exception for details.
> 2005-01-21 01:12:12.795 GMT Thread[DRDAConnThread_2,5,derby.daemons] (DATABASE = /NSinSameJVMTestDB), (DRDAID = {2}), Directory /NSinSameJVMTestDB cannot be created.
> 2005-01-21 01:12:12.816 GMT Thread[DRDAConnThread_2,5,derby.daemons] (DATABASE = /NSinSameJVMTestDB), (DRDAID = NF000001.A9FB-4124733202448020360{2}), Failed to create database '/NSinSameJVMTestDB', see the next exception for details.
> 2005-01-21 01:12:12.816 GMT Thread[DRDAConnThread_2,5,derby.daemons] (DATABASE = /NSinSameJVMTestDB), (DRDAID = NF000001.A9FB-4124733202448020360{2}), null
> null
> java.lang.NullPointerException
> 		 at org.apache.derby.impl.drda.DRDAConnThread.writeSQLCAGRP(DRDAConnThread.java:5076)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARD(DRDAConnThread.java:4882)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1042)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.exchangeServerAttributes(DRDAConnThread.java:950)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.sessionInitialState(DRDAConnThread.java:563)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:219)
> null
> java.lang.NullPointerException
> 		 at org.apache.derby.impl.drda.DRDAConnThread.writeSQLCAGRP(DRDAConnThread.java:5076)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.writeSQLCARD(DRDAConnThread.java:4882)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.parseDRDAConnection(DRDAConnThread.java:1042)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.exchangeServerAttributes(DRDAConnThread.java:950)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.sessionInitialState(DRDAConnThread.java:563)
> 		 at org.apache.derby.impl.drda.DRDAConnThread.run(DRDAConnThread.java:219)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Re: [jira] Commented: (DERBY-128) Network Server Gives NPE if SQLException has null arguments (e.g. for ERROR XBM0H)

Posted by Kathey Marsden <km...@sbcglobal.net>.
Dyre.Tjeldvoll@Sun.COM wrote:

>Kathey Marsden <km...@sbcglobal.net> writes:
>
>[snip]
>
>  
>
>>Hi Dyre,
>>
>>Could you post a comment giving a summary of your change (e.g. Why you
>>changed from one newException call to another)
>>    
>>
>
>Hmm, sure I can do that. (Actually I didn't think it was necessary
>since you original description describes what the
>problem is, where it is, and implicitly how to fix it... :)
>(Will add a JIRA comment).
>
>  
>

Just in general it is good with the patch to post a brief summary of
what you changed, what tests you ran and the results, for instance, I
ran derbyall and <test> failed because of DERBY-XXX which is unrelated
to my changes.

These will be used by the committer in the checkin comments.   Really
nice if we can just cut and paste.  Otherwise we have to recreate the
comments from the bug history, test logs etc.

>>Can you add  a test for this?
>>    
>>
>
>As in a test for this particular problem (dirctory cannot be created),
>or a general test that checks at "environment" problems are detected
>and reported correctly...?
>
>I can try to make such a test, but it will take me a while since I'm
>not very familiar with the test harness...
>  
>
Always best to add to an existing test, perhaps in this case
NSInSameJVM.java could have a new method that tests this failure.  I
don't know if  File.setReadOnly would help here.



Re: [jira] Commented: (DERBY-128) Network Server Gives NPE if SQLException has null arguments (e.g. for ERROR XBM0H)

Posted by Dy...@Sun.COM.
Kathey Marsden <km...@sbcglobal.net> writes:

[snip]

> Hi Dyre,
>
> Could you post a comment giving a summary of your change (e.g. Why you
> changed from one newException call to another)

Hmm, sure I can do that. (Actually I didn't think it was necessary
since you original description describes what the
problem is, where it is, and implicitly how to fix it... :)
(Will add a JIRA comment).

> Can you add  a test for this?

As in a test for this particular problem (dirctory cannot be created),
or a general test that checks at "environment" problems are detected
and reported correctly...?

I can try to make such a test, but it will take me a while since I'm
not very familiar with the test harness...
  
> Also can you confirm that you have run derbyAll ?

I thought I attached derbyall_report.txt along with the diff?

http://issues.apache.org/jira/secure/attachment/20247/derbyall_report.txt


-- 
dt

However, experience shows that for many people and many applications a
dose of paranoia is reasonable - Bjarne Stroustrup


Re: [jira] Commented: (DERBY-128) Network Server Gives NPE if SQLException has null arguments (e.g. for ERROR XBM0H)

Posted by Kathey Marsden <km...@sbcglobal.net>.
Dyre Tjeldvoll (JIRA) wrote:

>     [ http://issues.apache.org/jira/browse/DERBY-128?page=comments#action_66337 ]
>     
>Dyre Tjeldvoll commented on DERBY-128:
>--------------------------------------
>
>I have added a patch for this. I modified the test locally (so that directory creation fails) to reproduce the error. With the patch you still get an exception, but not the following NPE(s).
>
>  
>
Hi Dyre,

Could you post a comment giving a summary of your change (e.g. Why you
changed from one newException call to another)
Can you add  a test for this?  
Also can you confirm that you have run derbyAll ?

Thanks

Kathey