I have a file server written in J6.02. It works most of the time - for thousands of transactions - and then locks up. I have tracked it down to a missing event. At the point of failure:
there is one socket, and that is the socket I am listening on. It is marked asynchronous; the socket shows up as readable in sdselect'' (indicating pending connection); if I issue socket_handler '' from the keybosrd the system will start up again and run fine. Apparently an FD_ACCEPT event has been lost. At this point I will have to build a large load-generating setup to create enough traffic to fail. I would prefer to troubleshoot this from the source code, so I am asking for someone with access to the source for 6.02 j.exe to send me the relevant modules for inspection, or to see if they can find a problem in the area. (My understanding is that the source for this bit is not open-source). Below is the relevant part of my socket system. I'm including it just to show that what I'm doing is simple and robust. The listening socket is handled in the last 2 lines of socket_handler, which calls the recv verb to do the accept. When the system is locked up, socklist has one atom, as does sockobj (and they are correct - remember, a manual call to socket_handler gets things moving again) socket_handler =: 3 : 0 NB. Look for a writable socket with space if. #wsocklist do. 'v r w e' =. sdselect_jsocket_ ($0);wsocklist;($0);0 done =. $0 for_l. sockobj {~ socklist i. w do. done =. done , 0 = send__l '' end. wsocklist =: wsocklist -. done # w end. 'v r w e' =. sdselect_jsocket_ socklist;($0);($0);0 for_l. sockobj {~ socklist i. r do. recv__l '' end. ) recv =: 3 : 0 NB. sock is the socket number for the object if. 0 = 0 {:: 'r c' =. sdaccept_jsocket_ sock do. NB. this part configures the clone socket, not part of the problem if. #callback do. cloneinfo =: cloneinfo callback~ c end. o =. conew > {. cloneinfo c create__o }. cloneinfo end. '' ) Henry Rich ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm