OpenRTMFP / Cumulus

CumulusServer is a complete open source and cross-platform RTMFP server extensible by way of scripting
http://groups.google.com/group/openrtmfp-cumulus
GNU General Public License v3.0
593 stars 221 forks source link

UDPSocket crashed while send is been calling (linux) #94

Closed skywind3000 closed 11 years ago

skywind3000 commented 11 years ago

version 0193ca4744 has added UDPSocket, it can work correctly under windows, but in linux it crashed. environment: Linux version 2.6.18-194.3.1.el5.028stab069.6 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Wed May 26 18:31:05 MSD 2010

main.lua:

socket = cumulus:createUDPSocket()
function socket:onReception(data,address)
    NOTE("Reception from "..address)
    self:send(data,address) -- echo sample
end
error = socket:bind("0.0.0.0:1234") -- start the server
if error then ERROR(error) end

it prompted at beginning: 'ERROR www/main.lua[7] function_00000000406D8368' what's that means ?

and I sent a simple udp packet to CumulusServer, it prompted:

NOTE  www/main.lua[3] Reception from 218.107.55.254:50923
ERROR  www/main.lua[4] (method 'send') Understandable address, System exception: cannot lock mutex

then I upgraded poco to the latest version 1.4.5 , CumulusServer crashed when calling self:send

# ./CumulusServer
NOTE RTMFPServer[118] RTMFP server starts on 1935 port
ERROR www/main.lua[7] function_0000000040AEE368
NOTE www/main.lua[3] Reception from 218.107.55.253:50990
Aborted (core dumped)

crashed by signal 6

Program terminated with signal 6, Aborted.
(gdb) bt
#0 0x00002b524f0ca1b5 in raise () from /lib/libc.so.6
#1 0x00002b524f0ccfc0 in abort () from /lib/libc.so.6
#2 0x00002b524d5e3865 in Poco::SignalHandler::handleSignal(int) () from /usr/local/lib/libPocoFoundation.so.15
#3 
#4 0x00002b524dde9f1a in Poco::Net::SocketAddress::host() const () from /usr/local/lib/libPocoNet.so.15
#5 0x00000000004e9e7a in UDPSending::run() ()
#6 0x00002b524d29acf5 in Cumulus::PoolThread::run() () from ./../CumulusLib/libCumulus.so
#7 0x00002b524d2c188f in Cumulus::Startable::prerun() () from ./../CumulusLib/libCumulus.so
#8 0x00002b524d2c09a7 in Cumulus::StartableProcess::run() () from ./../CumulusLib/libCumulus.so
#9 0x00002b524d5f33a4 in Poco::ThreadImpl::runnableEntry(void*) () from /usr/local/lib/libPocoFoundation.so.15
#10 0x00002b524f4008ca in start_thread () from /lib/libpthread.so.0
#11 0x00002b524f16792d in clone () from /lib/libc.so.6
#12 0x0000000000000000 in ?? ()
(gdb) frame 2
#2 0x00002b524d5e3865 in Poco::SignalHandler::handleSignal(int) () from /usr/local/lib/libPocoFoundation.so.15
(gdb) info locals
No symbol table info available.
(gdb)

cumulusdev commented 11 years ago

fixed ;-)