monelli
06-10-2009, 10:13
Allora... Lo stesso codice su win32 gira bene su winCe si blocca e non capisco il perchè...
Mi dà questo errore
Il thread 0x96db90aa è terminato con il codice 0 (0x0).
Scarica modulo: MFC90UD.dll
Scarica modulo: wininet.dll
Scarica modulo: shlwapi.dll
Scarica modulo: msvcr90d.dll
Scarica modulo: compime.dll
Scarica modulo: nspm.dll
Scarica modulo: dtpt_nsp.dll
Scarica modulo: oleaut32.dll
Scarica modulo: commctrl.dll
Scarica modulo: aygshell.dll
Scarica modulo: wspm.dll
Scarica modulo: dtpt_lsp.dll
Scarica modulo: AutoBind_lsp.dll
Scarica modulo: ssllsp.dll
Scarica modulo: ws2.dll
Scarica modulo: ossvcs.dll
Scarica modulo: ole32.dll
Il programma '[0x77152C0E] Example1.exe' è terminato con il codice -1073741571 (0xc00000fd).
Ma la mia applicazione non usa i thread...
Ed ecco dove si presenta l'errore, all'interno della jrtplib ma non capisco cosa c'è di sbagliato:
int RTPUDPv4Transmitter::Poll()
{
if (!init)
return ERR_RTP_UDPV4TRANS_NOTINIT;
int status;
MAINMUTEX_LOCK
if (!created)
{
MAINMUTEX_UNLOCK
return ERR_RTP_UDPV4TRANS_NOTCREATED;
}
status = PollSocket(true); // poll RTP socket
if (status >= 0)
status = PollSocket(false); // poll RTCP socket
MAINMUTEX_UNLOCK
return status;
}
Tutto funzione provando col debugger passo passo (F11) finchè non arrivo a
status = PollSocket(true);
Premo nuovamente F11 e entro nella funzione...
int RTPUDPv4Transmitter::PollSocket(bool rtp)
{
RTPSOCKLENTYPE fromlen;
int recvlen;
char packetbuffer[RTPUDPV4TRANS_MAXPACKSIZE];
#if (defined(WIN32) || defined(_WIN32_WCE))
SOCKET sock;
unsigned long len;
#else
size_t len;
int sock;
#endif // WIN32
struct sockaddr_in srcaddr;
if (rtp)
sock = rtpsock;
else
sock = rtcpsock;
len = 0;
RTPIOCTL(sock,FIONREAD,&len);
if (len <= 0)
return 0;
while (len > 0)
{
RTPTime curtime = RTPTime::CurrentTime();
fromlen = sizeof(struct sockaddr_in);
recvlen = recvfrom(sock,packetbuffer,RTPUDPV4TRANS_MAXPACKSIZE,0,(struct sockaddr *)&srcaddr,&fromlen);
if (recvlen > 0)
{
bool acceptdata;
// got data, process it
if (receivemode == RTPTransmitter::AcceptAll)
acceptdata = true;
else
acceptdata = ShouldAcceptData(ntohl(srcaddr.sin_addr.s_addr),ntohs(srcaddr.sin_port));
if (acceptdata)
{
RTPRawPacket *pack;
RTPIPv4Address *addr;
uint8_t *datacopy;
addr = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPADDRESS) RTPIPv4Address(ntohl(srcaddr.sin_addr.s_addr),ntohs(srcaddr.sin_port));
if (addr == 0)
return ERR_RTP_OUTOFMEM;
datacopy = RTPNew(GetMemoryManager(),(rtp)?RTPMEM_TYPE_BUFFER_RECEIVEDRTPPACKET:RTPMEM_TYPE_BUFFER_RECEIVEDRTCPPACKET) uint8_t[recvlen];
if (datacopy == 0)
{
RTPDelete(addr,GetMemoryManager());
return ERR_RTP_OUTOFMEM;
}
memcpy(datacopy,packetbuffer,recvlen);
pack = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPRAWPACKET) RTPRawPacket(datacopy,recvlen,addr,curtime,rtp,GetMemoryManager());
if (pack == 0)
{
RTPDelete(addr,GetMemoryManager());
RTPDeleteByteArray(datacopy,GetMemoryManager());
return ERR_RTP_OUTOFMEM;
}
rawpacketlist.push_back(pack);
}
}
len = 0;
RTPIOCTL(sock,FIONREAD,&len);
}
return 0;
}
Il debugger si ferma nella seconda riga dove c'è la parentesi graffa aperta...
Premo nuovamente F11 e il programma termina stampando l'errore che ho scritto in precedenza.
Lo stesso codice su win32 funziona bene.
Non sò dove sbattere la testa cosa può essere???
Provato anche su win mobile 6 e mi dà lo stesso errore...
Help grazie
Mi dà questo errore
Il thread 0x96db90aa è terminato con il codice 0 (0x0).
Scarica modulo: MFC90UD.dll
Scarica modulo: wininet.dll
Scarica modulo: shlwapi.dll
Scarica modulo: msvcr90d.dll
Scarica modulo: compime.dll
Scarica modulo: nspm.dll
Scarica modulo: dtpt_nsp.dll
Scarica modulo: oleaut32.dll
Scarica modulo: commctrl.dll
Scarica modulo: aygshell.dll
Scarica modulo: wspm.dll
Scarica modulo: dtpt_lsp.dll
Scarica modulo: AutoBind_lsp.dll
Scarica modulo: ssllsp.dll
Scarica modulo: ws2.dll
Scarica modulo: ossvcs.dll
Scarica modulo: ole32.dll
Il programma '[0x77152C0E] Example1.exe' è terminato con il codice -1073741571 (0xc00000fd).
Ma la mia applicazione non usa i thread...
Ed ecco dove si presenta l'errore, all'interno della jrtplib ma non capisco cosa c'è di sbagliato:
int RTPUDPv4Transmitter::Poll()
{
if (!init)
return ERR_RTP_UDPV4TRANS_NOTINIT;
int status;
MAINMUTEX_LOCK
if (!created)
{
MAINMUTEX_UNLOCK
return ERR_RTP_UDPV4TRANS_NOTCREATED;
}
status = PollSocket(true); // poll RTP socket
if (status >= 0)
status = PollSocket(false); // poll RTCP socket
MAINMUTEX_UNLOCK
return status;
}
Tutto funzione provando col debugger passo passo (F11) finchè non arrivo a
status = PollSocket(true);
Premo nuovamente F11 e entro nella funzione...
int RTPUDPv4Transmitter::PollSocket(bool rtp)
{
RTPSOCKLENTYPE fromlen;
int recvlen;
char packetbuffer[RTPUDPV4TRANS_MAXPACKSIZE];
#if (defined(WIN32) || defined(_WIN32_WCE))
SOCKET sock;
unsigned long len;
#else
size_t len;
int sock;
#endif // WIN32
struct sockaddr_in srcaddr;
if (rtp)
sock = rtpsock;
else
sock = rtcpsock;
len = 0;
RTPIOCTL(sock,FIONREAD,&len);
if (len <= 0)
return 0;
while (len > 0)
{
RTPTime curtime = RTPTime::CurrentTime();
fromlen = sizeof(struct sockaddr_in);
recvlen = recvfrom(sock,packetbuffer,RTPUDPV4TRANS_MAXPACKSIZE,0,(struct sockaddr *)&srcaddr,&fromlen);
if (recvlen > 0)
{
bool acceptdata;
// got data, process it
if (receivemode == RTPTransmitter::AcceptAll)
acceptdata = true;
else
acceptdata = ShouldAcceptData(ntohl(srcaddr.sin_addr.s_addr),ntohs(srcaddr.sin_port));
if (acceptdata)
{
RTPRawPacket *pack;
RTPIPv4Address *addr;
uint8_t *datacopy;
addr = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPADDRESS) RTPIPv4Address(ntohl(srcaddr.sin_addr.s_addr),ntohs(srcaddr.sin_port));
if (addr == 0)
return ERR_RTP_OUTOFMEM;
datacopy = RTPNew(GetMemoryManager(),(rtp)?RTPMEM_TYPE_BUFFER_RECEIVEDRTPPACKET:RTPMEM_TYPE_BUFFER_RECEIVEDRTCPPACKET) uint8_t[recvlen];
if (datacopy == 0)
{
RTPDelete(addr,GetMemoryManager());
return ERR_RTP_OUTOFMEM;
}
memcpy(datacopy,packetbuffer,recvlen);
pack = RTPNew(GetMemoryManager(),RTPMEM_TYPE_CLASS_RTPRAWPACKET) RTPRawPacket(datacopy,recvlen,addr,curtime,rtp,GetMemoryManager());
if (pack == 0)
{
RTPDelete(addr,GetMemoryManager());
RTPDeleteByteArray(datacopy,GetMemoryManager());
return ERR_RTP_OUTOFMEM;
}
rawpacketlist.push_back(pack);
}
}
len = 0;
RTPIOCTL(sock,FIONREAD,&len);
}
return 0;
}
Il debugger si ferma nella seconda riga dove c'è la parentesi graffa aperta...
Premo nuovamente F11 e il programma termina stampando l'errore che ho scritto in precedenza.
Lo stesso codice su win32 funziona bene.
Non sò dove sbattere la testa cosa può essere???
Provato anche su win mobile 6 e mi dà lo stesso errore...
Help grazie