オブジェクトのリスト更新でクラッシュ
- Error Log
19:03:35 - [CLIENT]: Client thread for Fumi Hax 751c1531-03b5-48a9-8f2d-51a0527be7ca crashed. Logging them out. 19:03:35 - System.NullReferenceException: Object reference not set to an instance of an object at OpenMetaverse.Packets.ParcelObjectOwnersReplyPacket.get_Length () [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLPacketHandler.QueuePacket (OpenMetaverse.Packets.Packet packet, ThrottleOutPacketType throttlePacketType, System.Object id) [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLPacketHandler.OutPacket (OpenMetaverse.Packets.Packet packet, ThrottleOutPacketType throttlePacketType, System.Object id) [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLPacketHandler.OutPacket (OpenMetaverse.Packets.Packet packet, ThrottleOutPacketType throttlePacketType) [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLClientView.OutPacket (OpenMetaverse.Packets.Packet NewPack, ThrottleOutPacketType throttlePacketType) [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLClientView.SendLandObjectOwners (OpenSim.Framework.LandData land, System.Collections.Generic.List`1 groups, System.Collections.Generic.Dictionary`2 ownersAndCount) [0x00000] at OpenSim.Region.CoreModules.World.Land.LandObject.sendLandObjectOwners (IClientAPI remote_client) [0x00000] at OpenSim.Region.CoreModules.World.Land.LandManagementModule.handleParcelObjectOwnersRequest (Int32 local_id, IClientAPI remote_client) [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLClientView.ProcessInPacket (OpenMetaverse.Packets.Packet Pack) [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLPacketHandler.ProcessInPacket (OpenSim.Region.ClientStack.LindenUDP.LLQueItem item) [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLClientView.ClientLoop () [0x00000] at OpenSim.Region.ClientStack.LindenUDP.LLClientView.RunUserSession () [0x00000]
- OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
- QueuePacket() の item.Length = packet.Length; で例外発生
- ParcelObjectOwnersReplyPacket には get_Length() が実装されていないと言うこと?
- 原因不明だが,とりあえず,例外を catch して回避
private void QueuePacket( Packet packet, ThrottleOutPacketType throttlePacketType, Object id) { LLQueItem item = new LLQueItem(); item.Packet = packet; item.Incoming = false; item.throttleType = throttlePacketType; item.TickCount = Environment.TickCount; item.Identifier = id; item.Resends = 0; try { item.Length = packet.Length; } catch (Exception e) { item.Length = 0; } item.Sequence = packet.Header.Sequence; m_PacketQueue.Enqueue(item); m_PacketsSent++; }
Counter: 1951,
today: 2,
yesterday: 0
最終更新: 2009-08-31 (月) 18:52:51 (JST) (5627d) by iseki