Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - user318

#16
Я собрал netxms 1.2.2, пытаюсь запустить демона, а он в лог говорит такое:
Error creating data directory "/opt/netxms/share/netxms/packages"
Раньше пользовался версиями до 1.1.10 - они такого не хотели, в share/netxms было только aclocal зачем-то.
Зачем оно хочет туда записывать? Если тот же configure говорит, что:
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
Т.е. read-only! Ну и FHS:
http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREARCHITECTUREINDEPENDENTDATA
тоже так думает. Т.е. это общепринято, что туда писать во время работы ничего не надо.
#17
Почему-то у меня под gentoo с параметром CFLAGS/CXXFLAGS=-O2 собирается пакет. А если убрать -O2, то выдаёт такое:

Making all in netxmsd
make[4]: Entering directory `/var/tmp/portage/net-analyzer/netxms-1.1.6/work/netxms-1.1.6/src/server/netxmsd'
  CXX    netxmsd.o
netxmsd.cpp: In function 'BOOL ParseCommandLine(int, char**)':
netxmsd.cpp:206:29: warning: format not a string literal and no format arguments
netxmsd.cpp:209:96: warning: use of 'h' length modifier with 's' type character
netxmsd.cpp:231:84: warning: use of 'h' length modifier with 's' type character
netxmsd.cpp: In function 'int main(int, char**)':
netxmsd.cpp:417:77: warning: use of 'h' length modifier with 's' type character
  CXXLD  netxmsd
../core/.libs/libnxcore.so: undefined reference to `ServiceContainer::secondsInWeek'
../core/.libs/libnxcore.so: undefined reference to `ServiceContainer::secondsInDay'
collect2: ld returned 1 exit status
make[4]: *** [netxmsd] Error 1
make[4]: Leaving directory `/var/tmp/portage/net-analyzer/netxms-1.1.6/work/netxms-1.1.6/src/server/netxmsd'

Сейчас ещё проверил другие варианты:
-O0 - не собирается (что и следовало ожидать)
-O1 - собирается
-Os - собирается
-O3 - собирается
Ну т.е. начиная с -O1 собирается.
Пробовал просто включить флаги оптимизации, указанные в мане для -O1 - не собралось. Видимо -O1 ещё какую-то магию делает.
#18
Общие вопросы / Re: snprintf overflow
December 05, 2011, 07:20:52 PM
Ещё нашёл:
src/server/core/userdb_objects.cpp:66
        nx_strncpy(m_name, name, MAX_OBJECT_NAME);
А m_name имеет размер MAX_USER_NAME.
#19
Общие вопросы / Re: snprintf overflow
December 05, 2011, 07:00:50 PM
src/agent/subagents/linux/drbd.cpp:120:
                                nx_strncpy(s_drbdVersion, &line[pmatch[1].rm_so], 64);

В том же файле выше:
static char s_drbdVersion[32] = "0.0.0";
#20
Общие вопросы / Re: snprintf overflow
December 05, 2011, 06:53:41 PM
src/agent/core/policy.cpp:107
                DWORD size = msg->GetVariableBinary(VID_CONFIG_FILE_DATA, 0, NULL);
Оно говорит, что GetVariableBinary(DWORD, BYTE*, DWORD), а 3-м аргументом в качестве DWORD передаётся NULL.
#21
Общие вопросы / Re: snprintf overflow
December 05, 2011, 06:50:18 PM
Сюда до кучи запощу. При компиляции gentoo выдаёт диагностику напарсенную из компиляции видимо. Там в том числе и про snprintf было. Так же там есть про:
src/server/tools/nxdbmgr/upgrade.cpp

static struct
{
   int version;
   int newVersion;
   BOOL (* fpProc)(int, int);
} m_dbUpgradeMap[] =
{
   { 14, 15, H_UpgradeFromV14 },
...
        { 243, 244, H_UpgradeFromV243 },
   { 0, NULL }
};

NULL здесь не очень красиво выглядит.
#22
Общие вопросы / snprintf overflow
December 05, 2011, 06:44:12 PM
У меня netxmsd аварийно завершается при определённых действиях. Дебаг-символы и бектрейс показали, что валится на вызове _sntprintf.

src/server/core/subnet.cpp, функция void Subnet::setCorrectMask(DWORD dwAddr, DWORD dwMask):

                // Change name
                _sntprintf(m_szName, 128, _T("%s/%d"), IpToStr(dwAddr, szBuffer), BitsInMask(dwMask));


Как я понял из src/server/include/nms_objects.h определение m_szName (наследуется Subnet от NetObj) такое:
TCHAR m_szName[MAX_OBJECT_NAME];

MAX_OBJECT_NAME нашёл в include/nxlog.h:
#define MAX_OBJECT_NAME          64

Где что менять теперь? :)
#23
Похоже, что проблема была в том, что в некоторых местах не указан DESTDIR. Приложил патч, который помог на моей системе поставиться таким образом.
#24
Делаю:
./configure --prefix=/opt/netxms --with-agent
make
make DESTDIR=... install

Получаю ошибку:
...
make  install-exec-hook
make[6]: Entering directory `/var/tmp/portage/net-analyzer/netxms-1.1.6/work/netxms-1.1.6/src/agent/subagents/portCheck'
if test "x`uname -s`" = "xAIX" ; then OBJECT_MODE= ar x /opt/netxms/lib/netxms/portcheck.a /opt/netxms/lib/netxms/portcheck.so ; rm -f /opt/netxms/lib/netxms/portcheck.a ; fi
mv /opt/netxms/lib/netxms/portcheck.so /opt/netxms/lib/netxms/portcheck.nsm
mv: cannot stat `/opt/netxms/lib/netxms/portcheck.so': No such file or directory
make[6]: *** [install-exec-hook] Error 1
make[6]: Leaving directory `/var/tmp/portage/net-analyzer/netxms-1.1.6/work/netxms-1.1.6/src/agent/subagents/portCheck'
make[5]: *** [install-exec-am] Error 2
...

Система gentoo.
#25
Делаю:
./configure --prefix=/opt/netxms --with-agent --enable-unicode
make

Получаю:
...
make[3]: Entering directory `/var/tmp/portage/net-analyzer/netxms-1.1.6/work/netxms-1.1.6/src/libnetxms'
  CXX    agent.lo
  CXX    array.lo
  CXX    base64.lo
  CXX    crypto.lo
  CC     gen_uuid.lo
  CXX    config.lo
  CXX    geolocation.lo
crypto.cpp: In function 'RSA* LoadRSAKeys(const wchar_t*)':
crypto.cpp:476: warning: ignoring return value of 'size_t fread(void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result
  CXX    dload.lo
config.cpp: In member function 'bool Config::loadConfigDirectory(const wchar_t*, const wchar_t*)':
config.cpp:1086: error: 'DIRW' was not declared in this scope
config.cpp:1086: error: 'dir' was not declared in this scope
config.cpp:1091: error: 'wopendir' was not declared in this scope
config.cpp:1097: error: 'wreaddir' was not declared in this scope
config.cpp:1101: error: invalid use of incomplete type 'struct dirent_w'
config.cpp:1087: error: forward declaration of 'struct dirent_w'
config.cpp:1101: error: invalid use of incomplete type 'struct dirent_w'
config.cpp:1087: error: forward declaration of 'struct dirent_w'
config.cpp:1104: error: invalid use of incomplete type 'struct dirent_w'
config.cpp:1087: error: forward declaration of 'struct dirent_w'
config.cpp:1110: error: invalid use of incomplete type 'struct dirent_w'
config.cpp:1087: error: forward declaration of 'struct dirent_w'
config.cpp:1114: error: 'wclosedir' was not declared in this scope
At global scope:
cc1plus: warning: unrecognized command line option "-Wno-unused-result"
make[3]: *** [config.lo] Error 1
make[3]: *** Waiting for unfinished jobs....
At global scope:
cc1plus: warning: unrecognized command line option "-Wno-unused-result"
geolocation.cpp:239:1: error: converting to execution character set: Invalid or incomplete multibyte or wide character
geolocation.cpp: In member function 'void GeoLocation::posToString(bool, double)':
geolocation.cpp:189: error: converting to execution character set: Invalid or incomplete multibyte or wide character
geolocation.cpp: In static member function 'static double GeoLocation::parse(const wchar_t*, bool, bool*)':
geolocation.cpp:215: error: converting to execution character set: Invalid or incomplete multibyte or wide character
geolocation.cpp:215: error: converting to execution character set: Invalid or incomplete multibyte or wide character
At global scope:
cc1plus: warning: unrecognized command line option "-Wno-unused-result"
make[3]: *** [geolocation.lo] Error 1
make[3]: Leaving directory `/var/tmp/portage/net-analyzer/netxms-1.1.6/work/netxms-1.1.6/src/libnetxms'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/var/tmp/portage/net-analyzer/netxms-1.1.6/work/netxms-1.1.6/src'
...

Система gentoo.

Так же заметил, что если в параметрах указать --disable-unicode, то это воспринимается как --enable-unicode.