Customer reports this is easier to reproduce w/ x86 and that it may
take a couple of tries to make it happen.
The core file has been attached to this bug report.
Below is the thread dump of the java run time that we are having problems
with. It seems to die at the AWT-Modal thread. My code segments are below
--------------------------------------------------------
SIGSEGV 11* segmentation violation
si_signo [11]: SIGSEGV 11* segmentation violation
si_errno [0]: Error 0
si_code [1]: SEGV_ACCERR [addr: 0x14]
stackbase=816A5000, stackpointer=816A3F2C
Full thread dump:
"Thread-35" (TID:0x804476a8, sys_thread_t:0x817b4d88) prio=5
COM.edwardjones.cats.CatsP.OutOfData(CatsP.java:661)
COM.edwardjones.cats.SQLQuery.run(SQLQuery.java:132)
java.lang.Thread.run(Thread.java)
"AWT-Modal" (TID:0x804473a0, sys_thread_t:0x816a4d88) prio=5 *current thread*
sun.awt.motif.ModalThread.run(MDialogPeer.java:149)
"Thread-34" (TID:0x80441cd0, sys_thread_t:0x816c6d88) prio=5
java.lang.Object.wait(Object.java)
sun.awt.motif.MDialogPeer.show(MDialogPeer.java:102)
java.awt.Window.show(Window.java:116)
COM.edwardjones.cats.CatsP.OutOfData(CatsP.java:656)
COM.edwardjones.cats.SQLQuery.run(SQLQuery.java:132)
java.lang.Thread.run(Thread.java)
"Screen Updater" (TID:0x804317d0, sys_thread_t:0x81682d88) prio=4
java.lang.Object.wait(Object.java)
sun.awt.ScreenUpdater.nextEntry(ScreenUpdater.java:75)
sun.awt.ScreenUpdater.run(ScreenUpdater.java:95)
"AWT-Motif" (TID:0x80444950, sys_thread_t:0x81660d88) prio=5
java.lang.Thread.run(Thread.java)
"AWT-Input" (TID:0x80444928, sys_thread_t:0x81296d88) prio=5
"Finalizer thread" (TID:0x8042d3b0, sys_thread_t:0x81236d88) prio=1
"Async Garbage Collector" (TID:0x8042d368, sys_thread_t:0x81214d88) prio=1
"Idle thread" (TID:0x8042d320, sys_thread_t:0x811f2d88) prio=0
"clock handler" (TID:0x8042d1f8, sys_thread_t:0x811d0d88) prio=11
"main" (TID:0x8042d0a0, sys_thread_t:0x809b5b0) prio=6
java.net.PlainSocketImpl.accept(PlainSocketImpl.java:320)
java.net.ServerSocket.accept(ServerSocket.java:109)
COM.edwardjones.launcher.Launcher.run(Launcher.java:66)
COM.edwardjones.launcher.LauncherMain.main(LauncherMain.java:23)
Monitor Cache Dump:
java.net.PlainSocketImpl@8042E008/80464BF8 (key=0x8042e008): monitor owner: "main"
sun.awt.motif.MToolkit@80444910/8048C130 (key=0x80444910): monitor owner: "AWT-Modal"
Waiting to enter:
"AWT-Motif"
Waiting to be notified:
"AWT-Input"
sun.awt.motif.ModalThread@804473A0/805174D8 (key=0x804473a0): monitor owner: "AWT-Modal"
Waiting to be notified:
"Thread-34"
unknown key (key=0x81214d88): monitor owner: "Async Garbage Collector"
sun.awt.ScreenUpdater@804317D0/8048C510 (key=0x804317d0): unowned
Waiting to be notified:
"Screen Updater"
COM.edwardjones.cats.CatsP@80433878/8049AEA8 (key=0x80433878): monitor owner: "Thread-34"
Waiting to enter:
"Thread-35"
Registered Monitor Dump:
Finalize me queue lock: unowned
Waiting to be notified:
"Finalizer thread"
Thread queue lock: unowned
Class lock: unowned
Java stack lock: unowned
Code rewrite lock: unowned
Heap lock: unowned
Has finalization queue lock: unowned
Monitor IO lock: unowned
Child death monitor: unowned
Event monitor: unowned
I/O monitor: unowned
Alarm monitor: unowned
Waiting to be notified:
"clock handler"
Sbrk lock: unowned
Monitor cache lock: unowned
Monitor registry: monitor owner: "AWT-Modal"
Thread Alarm Q:
---------------------------------------
Code:
COM.edwardjones.cats.CatsP.OutOfData(CatsP.java:656)
dd.pack();
dd.show();
NOTE: dd is a modal dialog box
COM.edwardjones.cats.CatsP.OutOfData(CatsP.java:661)
This is at the end of a switch statement. Full CatsP.OurOfData included.
COM.edwardjones.cats.SQLQuery.run(SQLQuery.java:132)
requestor.OutOfData(QueryNum);
NOTE: requestor is a CatsP object.
----------------------------------------------------
public synchronized void OutOfData(int QueryNumber) {
downQuery();
SQLQuery sql;
switch(QueryNumber){
case SUMMARY_QUERY:
sql = new SQLQuery(this,SUMMARY_QUERY_2);
if (sql.isQueryInited()){ sql.StartQuery(); } else {
System.out.println("Query for Portfolio_2 not inited"); }
if (catsb!=null){
catsb.setMarketValues(AccountInfo,this);
}
break;
case SUMMARY_QUERY_2:
SummaryQueryDone=true;
break;
case DETAIL_QUERY:
sql = new SQLQuery(this,DETAIL_QUERY_1);
if (sql.isQueryInited()){ sql.StartQuery(); } else {
System.out.println("Query for detail_1 not inited"); }
break;
case DETAIL_QUERY_1:
sql = new SQLQuery(this,DETAIL_QUERY_0);
if (sql.isQueryInited()){ sql.StartQuery(); } else {
System.out.println("Query for detail_2 not inited"); }
break;
case DETAIL_QUERY_0:
sql = new SQLQuery(this,DETAIL_QUERY_2);
if (sql.isQueryInited()){ sql.StartQuery(); } else {
System.out.println("Query for detail_2 not inited"); }
break;
case DETAIL_QUERY_2:
String check;
check = (String)list.getItem(getSelectedRow(),0);
if (check!=null)
detailProperties.put("Account Type:",check);
check = (String)list.getItem(getSelectedRow(),1);
if (check!=null)
detailProperties.put("Quantity:" ,check);
detailProperties.put("Closing Price:" ,
(String)list.getItem(getSelectedRow(),3));
check=(String)list.getItem(getSelectedRow(),4);
if ((check!=null)&&(!check.equals(""))&&(!check.equals("0"))) {
detailProperties.put("Value:" , check);
setPortfolioPercent((String)list.getItem(getSelectedRow(),4),
detailProperties);
}
detailProperties.put("CUSIP:" ,
AccountCode.getCusipDisplay(
(String)list.getItem(getSelectedRow(),5)));
detailProperties.put("Symbol:" ,
(String)list.getItem(getSelectedRow(),6));
String []detailCol = (String[])list.getItem(getSelectedRow(),list.getColumns());
check = detailCol[6];
if (check!=null){
detailProperties.put("Exchange:",AccountCode.getExchange(check) );}
String []desc = new String[3];
desc[0]=detailCol[2];
desc[1]=detailCol[3];
desc[2]=detailCol[4];
detailProperties.put("Last Activity Date:",detailCol[5]);
Container f=this;
while(!((f=f.getParent()) instanceof Frame));
DetailDialog dd = new DetailDialog((Frame)f,realDetailHeaders,detailProperties,"Portfolio Information - Detail Window",true);
dd.setDescription(desc);
dd.addCompPanel(new CatsPControls(this,dd));
dd.buildGUI();
if (memoBoxUsed){
EJTextList MemoBox = new EJTextList();
MemoBox.setMinimumRows(2);
try {
for (int i=0;i<MemoText.size();i++){
MemoBox.addItem((String)MemoText.elementAt(i));
}
} catch (ArrayIndexOutOfBoundsException e){
System.out.println("Size lied in CatsP: " + e.toString());
}
dd.addCompPanel("Memo:",MemoBox);
}
dd.pack();
dd.show();
break;
default:
break;
}
}