Sigsegv на копии gsoap

Я пытаюсь создать службу con gsoap. Код:

ArchivatorCoreService server;
ArchivatorCoreService *tserver;
int port = 8080;
SOAP_SOCKET m, s;
m = server.bind(NULL, port, 100);
if (!soap_valid_socket(m))
{
      exit(1);
}
else
{
  qDebug() << "Info: Bind: Succesfully socket connection: " << m << ". Port " << port 
}
for (;;)
{
  qDebug() << "waiting...";
  s = server.accept();

  if (!soap_valid_socket(s))
  {
    if (server.errnum)
    {
       qDebug() << "1"; << "Error: Failed accept: " << messagec;
       exit(1);
  }
  else
  {
    qDebug() << "Info: Thread " << i << " accepts socket " << s << " connection from   IP " << ((server.ip >> 24)&0xFF) << "." << ((server.ip >> 16)&0xFF) << "." << ((server.ip >> 8)&0xFF) << "." << ((server.ip)&0xFF);

}
qDebug() << "2";
tserver = server.copy(); // make a safe copy
qDebug() << "3";

В строке tserver = server.copy(); ошибка сигсегв.

Архиватор CoreService Гераклы мыла;

Большое спасибо


person Jjreina    schedule 30.01.2012    source источник
comment
Ваша серверная переменная никогда не была инициализирована, только объявлена. Он содержит случайный мусор.   -  person    schedule 30.01.2012
comment
В C++ сервер ArchivatorCoreService; вызвать конструктор по умолчанию, нет?   -  person Jjreina    schedule 30.01.2012


Ответы (1)


Вы не говорите, какую версию gsoap вы используете; однако версии до 2.8.5 имеют проблемы с утечками памяти и SIGSEGV с генерируемым кодом C++. Подробнее см. мой предыдущий ответ здесь.

person Jackson    schedule 31.01.2012