JTDS crashes in Java HotSpot Server VM

  • 3361216
  • 20-Nov-2006
  • 26-Apr-2012

Environment

Novell Audit 2.0.2 JDBC Channel

Situation

An unexpected error has been detected by HotSpot Virtual Machine:
SIGSEGV (0xb) at pc=0x4082d5b5, pid=12763, tid=1303583664
Java VM: Java HotSpot(TM) Server VM (1.4.2_10-b03 mixed mode)
Problematic frame: V [libjvm.so+0x4345b5]
Using the JTDS driver from Linux to MS SQL hosted on a Windows server.
When you do a ./novell-naudit start -d and you look at the debugger screen, you don't see any events being saved to the datastore. All events show up as queued.
The amount of memory allocated to Novell Audit is completely consumed.
Novell Audit will remain in this state for a period of time. Then the Java Virtual Machine will return a Java HotSpot error and crash.
Novell Audit will crash at this time.

Resolution

When JTDS starts up and is successful at logging into the Microsoft SQL database, JTDS will send the following command to MSSQL:
select * from
The value in is the name of your Novell Audit table, such as NAUDITLOG. What this select statement does is it requests that every row in the NAUDITLOG table be sent back to the server. If your MSSQL server has a large dataset, then it can take a very long time for the data to come back. Additionally you can run out of memory in the Java virtual machine. Hence that's why you see the SIGSEGV error in the Java HotSpot Server.
To fix the problem, you will need to periodically rotate your Microsoft SQL database so that the database size does not get too large. Or you will need to truncate the table. Or delete the table altogether (if the data is expendable). If the Microsoft SQL database gets to be too large, then you will see the errors in the "Situation" portion of this document occur. Again, this crash will only occur when you start Novell Audit. If the Secure Logging Server (SLS) stays up, it can grow the database until it is too large for JTDS / Java VM to handle on startup.