David Sayada writes: > > I hope I am not top posting now :-) Apparently not. You need to look at your quoting, but keep it up. :-) > I think I have identified what can be the source of the problem. Please look > at the following scheme: > > This is the infinite loop of one my threads: > > while (true) > { > try > { > selectEventLoop(); > } > catch (Exception e) > { > Logger.logPrintln( e ); > } > } // of select loop > > And this is the way the selectEventLoop is implemented: > > void selectEventLoop() throws Exception > { > int nNumSelected = 0; > > while ( nNumSelected == 0 ) > { > signalSendChannels(); > > //Logger.logPrintln( "XXXXXXXXX Before select" ); > nNumSelected = m_selector.select(); > //Logger.logPrintln( "XXXXXXXXX After select" ); > } > > Set readyKeys = m_selector.selectedKeys(); > Iterator iterator = readyKeys.iterator(); > > while (iterator.hasNext()) > { > SelectionKey key = (SelectionKey) iterator.next(); > iterator.remove(); > try > { > ....... > } > catch (IOException ex) > { > Logger.logPrintln( ex ); > closeChannel( key ); > } > } // of selected keys iterator > } > > May the parts of this function which are not under try and catch be > problematic? Should the exception thrown in this area not be caught by the > try and catch of the upper layer inside the infinite loop? There's nothing I can see that should cause any trouble, but I suppose the problem is that becasue stack traces on your version of gcj aren't working you have no way to know where the problem is? Andrew.