id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,branch,branch_author,launchpad_bug
4172,UDP crashes python.exe when using IOCPReactor,JoshAlbrecht,,"The program below causes python.exe to crash.  I've tested on Windows XP 32Bit, Windows 7 64bit, and I've tested with Python 2.5.2 and 2.6.4, and I've tested using both Twisted 9.0.0 and 8.2.0.  It has crashed with every combination.

One interesting thing to note is that it crashes with no output if you comment out the for loop (even with the for loop, it crashes with no output on my windows XP system).  Usually I get this output though:

C:\Python25\lib\site-packages\twisted\internet\iocpreactor\reactor.py:29: UserWarning: pyOpenSSL 0.10 or newer is required for SSL support in iocpreactor. It is missing, so the reactor will not support SSL APIs.
  ""pyOpenSSL 0.10 or newer is required for SSL support in iocpreactor. ""
(('127.0.0.1', 6951), 'HELLO')
(('127.0.0.1', 33351), 'HELLO')

Sometimes more or fewer HELLO lines are printed.

{{{
#!python
from twisted.internet.iocpreactor.reactor import IOCPReactor
from twisted.internet.main import installReactor
from twisted.internet.protocol import DatagramProtocol


reactor = IOCPReactor()
installReactor(reactor)


DATA = 'HELLO'
REMOTE_IP = ""127.0.0.1""
REMOTE_PORT = 33351


class EchoDatagram(DatagramProtocol):       
  def datagramReceived(self, datagram, addr):
    print((addr, datagram))
    self.transport.write(datagram, addr)
    

p1 = EchoDatagram()
listening_port1 = reactor.listenUDP(6951, p1, interface='')
p2 = EchoDatagram()
listening_port2 = reactor.listenUDP(REMOTE_PORT, p2, interface=REMOTE_IP)
    

def pointless_write():
  p1.transport.write(DATA, (REMOTE_IP, REMOTE_PORT))
  
  for i in xrange(10):
    f = open(""temp1"", ""wb"")
    f.write(""Hi!"")
    f.close()
    f = open(""temp1"", ""rb"")
    data = f.read()
    f.close()
    
  reactor.callLater(1, pointless_write)


reactor.callLater(1, pointless_write)
reactor.run()
}}}",defect,closed,highest,,core,fixed,windows,itamar,branches/recvfrom-segfault-4172,,
