Closed chertov closed 7 years ago
Запускается нормально! Но, к сожалению, через минуту-две упало вот тут:
> i2pd_d.exe!i2p::ssu::SentMessage::~SentMessage() Line 64 C++
[External Code]
i2pd_d.exe!i2p::ssu::SSUData::ProcessSentMessageAck(unsigned int msgID) Line 34 C++
i2pd_d.exe!i2p::ssu::SSUData::ProcessAcks(unsigned char * & buf, unsigned char flag) Line 49 C++
i2pd_d.exe!i2p::ssu::SSUData::ProcessMessage(unsigned char * buf, unsigned int len) Line 220 C++
i2pd_d.exe!i2p::ssu::SSUSession::ProcessData(unsigned char * buf, unsigned int len) Line 719 C++
i2pd_d.exe!i2p::ssu::SSUSession::ProcessMessage(unsigned char * buf, unsigned int len, const boost::asio::ip::basic_endpoint<boost::asio::ip::udp> & senderEndpoint) Line 134 C++
i2pd_d.exe!i2p::ssu::SSUSession::ProcessNextMessage(unsigned char * buf, unsigned int len, const boost::asio::ip::basic_endpoint<boost::asio::ip::udp> & senderEndpoint) Line 124 C++
i2pd_d.exe!i2p::ssu::SSUServer::HandleReceivedFrom(const boost::system::error_code & ecode, unsigned int bytes_transferred) Line 963 C++
i2pd_d.exe!boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>::operator()(i2p::ssu::SSUServer * p, const boost::system::error_code & a1, unsigned int a2) Line 280 C++
i2pd_d.exe!boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> >::operator()<boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list2<boost::system::error_code const &,unsigned int const &> >(boost::_bi::type<void> __formal, boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int> & f, boost::_bi::list2<boost::system::error_code const &,unsigned int const &> & a, int __formal) Line 393 C++
i2pd_d.exe!boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > >::operator()<boost::system::error_code,unsigned int>(const boost::system::error_code & a1, const unsigned int & a2) Line 103 C++
i2pd_d.exe!boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned int>::operator()() Line 129 C++
i2pd_d.exe!boost::asio::asio_handler_invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned int> >(boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned int> & function, ...) Line 70 C++
i2pd_d.exe!boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned int>,boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > > >(boost::asio::detail::binder2<boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > >,boost::system::error_code,unsigned int> & function, boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > > & context) Line 37 C++
i2pd_d.exe!boost::asio::detail::win_iocp_socket_recvfrom_op<boost::asio::mutable_buffers_1,boost::asio::ip::basic_endpoint<boost::asio::ip::udp>,boost::_bi::bind_t<void,boost::_mfi::mf2<void,i2p::ssu::SSUServer,boost::system::error_code const &,unsigned int>,boost::_bi::list3<boost::_bi::value<i2p::ssu::SSUServer *>,boost::arg<1>,boost::arg<2> > > >::do_complete(boost::asio::detail::win_iocp_io_service * owner, boost::asio::detail::win_iocp_operation * base, const boost::system::error_code & result_ec, unsigned int bytes_transferred) Line 104 C++
i2pd_d.exe!boost::asio::detail::win_iocp_operation::complete(boost::asio::detail::win_iocp_io_service & owner, const boost::system::error_code & ec, unsigned int bytes_transferred) Line 46 C++
i2pd_d.exe!boost::asio::detail::win_iocp_io_service::do_one(bool block, boost::system::error_code & ec) Line 404 C++
i2pd_d.exe!boost::asio::detail::win_iocp_io_service::run(boost::system::error_code & ec) Line 162 C++
i2pd_d.exe!boost::asio::io_service::run() Line 59 C++
i2pd_d.exe!i2p::ssu::SSUServer::Run() Line 916 C++
[External Code]
пишет: HEAP CORRUPTION DETECTED: after Normal block (#142771) at 0x03E33230. CRT detected that the application wrote to memory after end of heap buffer. и при повторных запусках тоже самое происходит...
По поводу сборки под виндой могу настроить, если есть сервер с виндой. Либо заливать куда-нибудь свои собранные бинарники периодически. Я пытался собрать с помощью mingw чтобы можно было автоматически собирать билд для винды под линуксом, но до конца не довел. Давно хочу настроить сборку через cmake, но все никак не доведу до ума...
Заметил лог сборки под виндой на jenkins и там ошибка
cryptlib.lib(rsa.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MTd_StaticDebug' doesn't match value 'MDd_DynamicDebug' in AddressBook.obj [c:\Jenkins\workspace\i2pd-win32-msvc (PurpleI2P)\Win32\i2pd.vcxproj]
Это связано с тем что cryptlib по умолчанию собирается как "Multi-threaded Debug", а i2pd собирается как "Multi-threaded Debug DLL"... нужно чтобы эти настройки проекта совпадали. Задаются они в свойстве проекта в меню слева Configuration Properties -> C/С++ -> Code Generation в этом пункте на панели справа Runtime Library отвечает за этот параметр.
Выглядит оно так:
Я собираю cryptlib как Multi-threaded Debug DLL.
Спасибо, разбираются с билдом. Падает все время на том же месте?
Hi chertov,
Sorry I don't speak Russian well, almost none at all. I would be happy to give you access to our jenkins and the virtual machine I run for VS2013 if you can set it up for us. I've just worked some time on a projct with C# in my dayjob, so I'm not so familiar with VC++ nor Win32 in general. If so, could you please send me a mail with an IP so I can allow you in the firewall? send it to mikal@privacysolutions.no and I reply with the password for remote desktop! Also if you want you can join IRC and I'll tell you a bit on how I've tried to set it up.. But unfortunately you have to listen on me in english then. I'm also planning to setup a Mingw build there based on the Qt 5.3 packages. Since we got a lot of Qt projects too :) By the way, do you got a GPG? I prefer sending pw in GPG, so we can verify we're talking to right person :)
спасибо!
/Mikal
По порядку. В результате мучений успешно собрал и запустил. Тот достаточно очевидный баг пофксил, проверил, больше не падает.
Теперь вопросы:
original, а где та проблема с SSU detection под Windows, уже есть созданная issue?
Наверное не с SSU, а с MTU
Спешу сообщить что концепция определения MTU под Windows отработана на прототипах, теперь код из прототипов переносится непосредственно в рабочую функцию. Когда точно будет завершена работа -- пока не буду обещать, если повезет то совсем скоро.
Windows should work fine now.
Собрал исходники с помощью Visual Studio 2013. Вроде бы компилируется, запускается, но есть проблемы. При первом запуске создает два файла router.info и router.keys (в них какая-то каша). Виндовский фаервол спросил разрешить или нет, видимо сервер открыл порт. Пишет такой лог:
и падает в void Tunnel::Build (uint32_t replyMsgID, OutboundTunnel * outboundTunnel) в этой точке:
При последующих запусках не может распарсить router.info и соответственно вылетает.
При компиляции был собран boost 1.55 и crypto++ 5.6.2 и возникли следующие проблемы: 1) Компилятор vs2013 пока не умеет спецификаторы default, но, к счастью, их всего несколько. В коде эти конструкторы не использовались, поэтому большую часть просто закомментил (классы IdentHash и RouterInfo).
2) В винде нету endian.h, использовал такую версию https://gist.github.com/panzi/6856583
3) тип ssize_t отсутствует, не разбирался пока, просто убрал одну s)
4) Отсутствует gmtime_r. Пока оставил так:
5) функция sleep в винде начинается с заглавной буквы Sleep
Под линуксом не собирал, думаю стоит поставить линукс и искать 10 отличий) Очень бы хотелось иметь кросплатформенные исходники и собирать проект родным компилятором под виндой.