ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Коллизия символов разных динамических библиотек
@ 2010-09-11 19:02 Roman Savochenko
  2010-09-12 15:42 ` Roman Savochenko
  2010-09-13 15:50 ` Dmitry V. Levin
  0 siblings, 2 replies; 16+ messages in thread
From: Roman Savochenko @ 2010-09-11 19:02 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 998 bytes --]

Приветствую всех

Натолкнулся тут на проблему с коллизией символов динамических библиотек.
А именно, в моём проекте OpenSCADA, в Сизифе, перестала 
инициализироваться библиотека QT 4.7. Инициализация библиотеки 
осуществляется в отдельном модуле (разделяемая библиотека so), по 
зависимостям которого подтягиваются библиотеки QT, в первую очередь QTCore.

Так вот, если зависимость на QTCore поместить в ядро программы, то всё 
прекрасно запускается и работает. Т.е. получается, что одинаковые 
символы QTCore оказываются раньше символов неких других модулей и 
вызываются именно они, в случае с модулем получается наоборот.

В самой программе OpenSCADA уже нет ни одного простого символа за 
рамками собственных областей видимости поэтому грешу на используемые 
сторонние библиотеки, вроде Expat, Gd, OpenSSL. Следовательно вопрос. 
Можно-ли указать линкеру сообщать о коллизиях символов в динамических 
библиотек во время выполнения dlopen? Сам покопал тут и с ходу не нашёл.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-11 19:02 [devel] Коллизия символов разных динамических библиотек Roman Savochenko
@ 2010-09-12 15:42 ` Roman Savochenko
  2010-09-12 16:13   ` Денис Смирнов
  2010-09-12 19:47   ` Alexander Bokovoy
  2010-09-13 15:50 ` Dmitry V. Levin
  1 sibling, 2 replies; 16+ messages in thread
From: Roman Savochenko @ 2010-09-12 15:42 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1790 bytes --]

11.09.2010 22:02, Roman Savochenko пишет:
> В самой программе OpenSCADA уже нет ни одного простого символа за 
> рамками собственных областей видимости поэтому грешу на используемые 
> сторонние библиотеки, вроде Expat, Gd, OpenSSL. Следовательно вопрос. 
> Можно-ли указать линкеру сообщать о коллизиях символов в динамических 
> библиотек во время выполнения dlopen? Сам покопал тут и с ходу не нашёл.
На вопрос можно не отвечать. Проблема решена.

Однако мантейнерам системо-образующих пакетов решение может быть 
интересным, поскольку вскрывает системную проблему динамического линкера.

В общем для проверки модулей на разделяемую библиотеку, перед 
окончательным её подключением, мною использовалась функция открытия 
модуля dlopen(), а затем, если модуль нормально открылся, её закрытие 
посредством dlclose(), а также последующая регистрация файла модуля как 
корректный. После этого окончательно вызывалась dlopen() для финального 
подключения.

На Branch 5.1 и ещё дальше в историю этот механизм прекрасно работал. В 
Сизифе-же имеем падение. Если убираем стадию проверки с предварительным 
вызовом dlopen() -> dlclose() то всё работает. Похоже имеем дело с 
проблемой линкера при перелинковке библиотек по зависимостям, а именно 
происходит следующее:
  - Подключение библиотек QTCore и QtGui.
  - Отключение библиотек QTCore и QtGui.
  - Подключение библиотек QTCore и QtGui. И на этом этапе происходит 
ошибочная линковка!

Думаю для программ, единоразово подключающих свои модули, это не 
проблема. Однако есть программы, которые могут отбрасывать модули во 
время работы и подключать новые, например для горячего их обновления. 
Так вот для них это может оказаться проблемой, правда только для модулей 
с собственными, достаточно тяжёлыми, зависимостями.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-12 15:42 ` Roman Savochenko
@ 2010-09-12 16:13   ` Денис Смирнов
  2010-09-13  7:35     ` Roman Savochenko
  2010-09-12 19:47   ` Alexander Bokovoy
  1 sibling, 1 reply; 16+ messages in thread
From: Денис Смирнов @ 2010-09-12 16:13 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 758 bytes --]

On Sun, Sep 12, 2010 at 06:42:39PM +0300, Roman Savochenko wrote:

RS> Думаю для программ, единоразово подключающих свои модули, это не 
RS> проблема. Однако есть программы, которые могут отбрасывать модули во 
RS> время работы и подключать новые, например для горячего их обновления. 
RS> Так вот для них это может оказаться проблемой, правда только для модулей 
RS> с собственными, достаточно тяжёлыми, зависимостями.

Эта проблема известна в Asterisk. Проявляется с модулем H.323. unload/load
-> падение. Для решения этой проблемы приходится линковать сам астериск с
теми же библиотеками с коорыми слинкован модуль.

-- 
С уважением, Денис

http://mithraen.ru/
----------------------------------------------------------------------------

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-12 15:42 ` Roman Savochenko
  2010-09-12 16:13   ` Денис Смирнов
@ 2010-09-12 19:47   ` Alexander Bokovoy
  2010-09-13  5:59     ` Roman Savochenko
  1 sibling, 1 reply; 16+ messages in thread
From: Alexander Bokovoy @ 2010-09-12 19:47 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2010/9/12 Roman Savochenko <rom_as@diyaorg.dp.ua>:
> Думаю для программ, единоразово подключающих свои модули, это не проблема.
> Однако есть программы, которые могут отбрасывать модули во время работы и
> подключать новые, например для горячего их обновления. Так вот для них это
> может оказаться проблемой, правда только для модулей с собственными,
> достаточно тяжёлыми, зависимостями.
Глобальные статические объекты приносят с собой деструкторы, которые
вызываются при выгрузке модулей. Изменение порядка загрузки/выгрузки
модулей с дополнительными зависимостями приводит к тому, что запись в
таблице символов для деструктора обнуляется, а потом этот деструктор
вызывается при выгрузке модуля (по уже обнуленному значению).

Например, QStringList  имеет базовым классом QList<QString>, его
деструктор вызовет QList<QString>::~QList, который будет определен как
weak символ в каждом бинарнике, использующем QList<QString> (шаблонный
класс с не-inline использованием QString). Этот символ разрешается в
какую-то из целей-кандидатов в загруженных библиотеках. Если
библиотека выгружена, то символ в таблице будет обнулен, но вызван
позже деструктором глобального объекта.

Порядок вызова динамических конструкторов глобальных объектов в C++
определен только внутри одной единицы компиляции. Порядок выполнения
инициализации между единицами компиляции неопределен, он может быть
разным для разных запусков одной и той же программы. То же самое с
деструкторами.

-- 
/ Alexander Bokovoy

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-12 19:47   ` Alexander Bokovoy
@ 2010-09-13  5:59     ` Roman Savochenko
  2010-09-13  6:05       ` Roman Savochenko
  2010-09-22 10:13       ` Roman Savochenko
  0 siblings, 2 replies; 16+ messages in thread
From: Roman Savochenko @ 2010-09-13  5:59 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1193 bytes --]

12.09.2010 22:47, Alexander Bokovoy пишет:
>> Думаю для программ, единоразово подключающих свои модули, это не проблема.
>> Однако есть программы, которые могут отбрасывать модули во время работы и
>> подключать новые, например для горячего их обновления. Так вот для них это
>> может оказаться проблемой, правда только для модулей с собственными,
>> достаточно тяжёлыми, зависимостями.
>>      
> Порядок вызова динамических конструкторов глобальных объектов в C++
> определен только внутри одной единицы компиляции. Порядок выполнения
> инициализации между единицами компиляции неопределен, он может быть
> разным для разных запусков одной и той же программы. То же самое с
> деструкторами.
>    
Не оно. В моём случае нет ни статических объектов в модуле ни кода 
выполняющегося в момент dlopen() и dlclose(). И подключение 
подразумевает только разрешение зависимостей внешних библиотек линкером, 
опять же в моём случае это QTCore, QTGui и всё что они тянут. Возможно, 
конечно, что-то есть из статики в этих библиотеках, но независимый тест 
на прототипчике этой проблемы в QTCore, QTGui не выявил. Эта проблема 
воспроизводится только в рабочем окружении программы.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-13  5:59     ` Roman Savochenko
@ 2010-09-13  6:05       ` Roman Savochenko
  2010-09-13  6:34         ` Alexander Bokovoy
  2010-09-22 10:13       ` Roman Savochenko
  1 sibling, 1 reply; 16+ messages in thread
From: Roman Savochenko @ 2010-09-13  6:05 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1063 bytes --]

13.09.2010 08:59, Roman Savochenko пишет:
>> Порядок вызова динамических конструкторов глобальных объектов в C++
>> определен только внутри одной единицы компиляции. Порядок выполнения
>> инициализации между единицами компиляции неопределен, он может быть
>> разным для разных запусков одной и той же программы. То же самое с
>> деструкторами.
>      Не оно. В моём случае нет ни статических объектов в модуле ни 
> кода выполняющегося в момент dlopen() и dlclose(). И подключение 
> подразумевает только разрешение зависимостей внешних библиотек 
> линкером, опять же в моём случае это QTCore, QTGui и всё что они 
> тянут. Возможно, конечно, что-то есть из статики в этих библиотеках, 
> но независимый тест на прототипчике этой проблемы в QTCore, QTGui не 
> выявил. Эта проблема воспроизводится только в рабочем окружении 
> программы.
Кроме всего прочего dlopen вызывается с флагами RTLD_LAZY|RTLD_LOCAL, 
что по идеи исключает немедленный резолвинг всех символов, а так-же то, 
что на ранних версиях дистрибутива это прекрасно работает.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-13  6:05       ` Roman Savochenko
@ 2010-09-13  6:34         ` Alexander Bokovoy
  2010-09-13 15:49           ` Roman Savochenko
  0 siblings, 1 reply; 16+ messages in thread
From: Alexander Bokovoy @ 2010-09-13  6:34 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2010/9/13 Roman Savochenko <rom_as@diyaorg.dp.ua>:
>>     Не оно. В моём случае нет ни статических объектов в модуле ни кода
>> выполняющегося в момент dlopen() и dlclose(). И подключение подразумевает
>> только разрешение зависимостей внешних библиотек линкером, опять же в моём
>> случае это QTCore, QTGui и всё что они тянут. Возможно, конечно, что-то есть
>> из статики в этих библиотеках, но независимый тест на прототипчике этой
>> проблемы в QTCore, QTGui не выявил. Эта проблема воспроизводится только в
>> рабочем окружении программы.
>
> Кроме всего прочего dlopen вызывается с флагами RTLD_LAZY|RTLD_LOCAL, что по
> идеи исключает немедленный резолвинг всех символов, а так-же то, что на
> ранних версиях дистрибутива это прекрасно работает.
Запустите приложение с
LD_DEBUG=all LD_DEBUG_OUTPUT=/path/to/file /path/to/executable
ld.so в получившемся отчете расскажет все, что происходило с
динамической загрузкой и выгрузкой.

-- 
/ Alexander Bokovoy

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-12 16:13   ` Денис Смирнов
@ 2010-09-13  7:35     ` Roman Savochenko
  0 siblings, 0 replies; 16+ messages in thread
From: Roman Savochenko @ 2010-09-13  7:35 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 889 bytes --]

12.09.2010 19:13, Денис Смирнов пишет:
> RS>  Думаю для программ, единоразово подключающих свои модули, это не
> RS>  проблема. Однако есть программы, которые могут отбрасывать модули во
> RS>  время работы и подключать новые, например для горячего их обновления.
> RS>  Так вот для них это может оказаться проблемой, правда только для модулей
> RS>  с собственными, достаточно тяжёлыми, зависимостями.
>
> Эта проблема известна в Asterisk. Проявляется с модулем H.323. unload/load
> ->  падение. Для решения этой проблемы приходится линковать сам астериск с
> теми же библиотеками с коорыми слинкован модуль.
>    
Да, именно так. Моя проблема тоже решалась выносом зависимостей модулей 
QT прямо в ядро программы.
Сейчас правда отключил проверку модулей предварительным открытием dlopen 
и для старта это работает.
Но при переподключении модуля наверное тоже упадёт.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-13  6:34         ` Alexander Bokovoy
@ 2010-09-13 15:49           ` Roman Savochenko
  0 siblings, 0 replies; 16+ messages in thread
From: Roman Savochenko @ 2010-09-13 15:49 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1055 bytes --]

13.09.2010 09:34, Alexander Bokovoy пишет:
> Запустите приложение с
> LD_DEBUG=all LD_DEBUG_OUTPUT=/path/to/file /path/to/executable
> ld.so в получившемся отчете расскажет все, что происходило с
> динамической загрузкой и выгрузкой.
>    
Запустил и получил три файла, по одному на поток. Файл потока, который 
падает, получился 45Мб.
При поверхностном просмотре всё выглядит нормально. Но если не знать 
чего искать то копаться там можно долго.

Однако, чётко разглядел запросы на поиск после первого dlopen, как 
процесс relocation (lazy). Так вот чисто QT-шные там отсутствуют. Но 
зато полно иксовых и ещё ряда библиотек:
/lib/libpcre.so.3 -> _pcre_ucd_stage1, pcre_free, _pcre_OP_lengths, ... 
- короче своих переликовует, хотя зачем?
/usr/lib/libXext.so.6 -> _XExtensionErrorFunction, 
_XLockMutex_fn(/usr/lib/libX11.so.6)
/usr/lib/libXcursor.so.1
/usr/lib/libICE.so.6 -> много своих
/usr/lib/libQtGui.so.4 -> куча своих
/usr/lib/libQtCore.so.4 -> тоже куча своих
Мои там тоже есть.

В общем мне он ни о чём новом не рассказал.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-11 19:02 [devel] Коллизия символов разных динамических библиотек Roman Savochenko
  2010-09-12 15:42 ` Roman Savochenko
@ 2010-09-13 15:50 ` Dmitry V. Levin
  2010-09-13 16:12   ` Roman Savochenko
  1 sibling, 1 reply; 16+ messages in thread
From: Dmitry V. Levin @ 2010-09-13 15:50 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 515 bytes --]

On Sat, Sep 11, 2010 at 10:02:07PM +0300, Roman Savochenko wrote:
> Приветствую всех
> 
> Натолкнулся тут на проблему с коллизией 
> символов динамических библиотек.
> А именно, в моём проекте OpenSCADA, в Сизифе, 
> перестала инициализироваться 
> библиотека QT 4.7. Инициализация 
> библиотеки осуществляется в отдельном 
> модуле (разделяемая библиотека so), по 
> зависимостям которого подтягиваются 
> библиотеки QT, в первую очередь QTCore.

Коллизия происходит по символам из QT?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-13 15:50 ` Dmitry V. Levin
@ 2010-09-13 16:12   ` Roman Savochenko
  2010-09-13 16:15     ` Dmitry V. Levin
  0 siblings, 1 reply; 16+ messages in thread
From: Roman Savochenko @ 2010-09-13 16:12 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 672 bytes --]

13.09.2010 18:50, Dmitry V. Levin пишет:
>
>> Натолкнулся тут на проблему с коллизией
>> символов динамических библиотек.
>> А именно, в моём проекте OpenSCADA, в Сизифе,
>> перестала инициализироваться
>> библиотека QT 4.7. Инициализация
>> библиотеки осуществляется в отдельном
>> модуле (разделяемая библиотека so), по
>> зависимостям которого подтягиваются
>> библиотеки QT, в первую очередь QTCore.
>>      
> Коллизия происходит по символам из QT?
>    
Судя по результату, то нет. Да и друзья по несчастью нашлись, у которых 
это не с QT.
Больше похоже на проблемы в перелинковке библиотек при повторном их 
подключении. Я в этом треде отвечал.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-13 16:12   ` Roman Savochenko
@ 2010-09-13 16:15     ` Dmitry V. Levin
  2010-09-14  5:29       ` Roman Savochenko
  0 siblings, 1 reply; 16+ messages in thread
From: Dmitry V. Levin @ 2010-09-13 16:15 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 815 bytes --]

On Mon, Sep 13, 2010 at 07:12:03PM +0300, Roman Savochenko wrote:
> 13.09.2010 18:50, Dmitry V. Levin пишет:
> >
> >>Натолкнулся тут на проблему с коллизией
> >>символов динамических библиотек.
> >>А именно, в моём проекте OpenSCADA, в Сизифе,
> >>перестала инициализироваться
> >>библиотека QT 4.7. Инициализация
> >>библиотеки осуществляется в отдельном
> >>модуле (разделяемая библиотека so), по
> >>зависимостям которого подтягиваются
> >>библиотеки QT, в первую очередь QTCore.
> >>     
> >Коллизия происходит по символам из QT?
> >   
> Судя по результату, то нет. Да и друзья по 
> несчастью нашлись, у которых это не с QT.
> Больше похоже на проблемы в перелинковке 
> библиотек при повторном их подключении. 

Тогда как вы определили, что имеет место коллизия символов?


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-13 16:15     ` Dmitry V. Levin
@ 2010-09-14  5:29       ` Roman Savochenko
  0 siblings, 0 replies; 16+ messages in thread
From: Roman Savochenko @ 2010-09-14  5:29 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 877 bytes --]

13.09.2010 19:15, Dmitry V. Levin пишет:
>>>> Натолкнулся тут на проблему с коллизией
>>>> символов динамических библиотек.
>>>> А именно, в моём проекте OpenSCADA, в Сизифе,
>>>> перестала инициализироваться
>>>> библиотека QT 4.7. Инициализация
>>>> библиотеки осуществляется в отдельном
>>>> модуле (разделяемая библиотека so), по
>>>> зависимостям которого подтягиваются
>>>> библиотеки QT, в первую очередь QTCore.
>>>>          
>>> Коллизия происходит по символам из QT?
>>>        
>> Судя по результату, то нет. Да и друзья по
>> несчастью нашлись, у которых это не с QT.
>> Больше похоже на проблемы в перелинковке
>> библиотек при повторном их подключении.
>>      
> Тогда как вы определили, что имеет место коллизия символов?
>    
Это была моя первая догадка. Потом она была отодвинута рядом фактов, в 
процессе продолжения изучения проблемы.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-13  5:59     ` Roman Savochenko
  2010-09-13  6:05       ` Roman Savochenko
@ 2010-09-22 10:13       ` Roman Savochenko
  2010-09-22 11:10         ` Alexander Bokovoy
  1 sibling, 1 reply; 16+ messages in thread
From: Roman Savochenko @ 2010-09-22 10:13 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1290 bytes --]

  13.09.2010 08:59, Roman Savochenko пишет:
>> Порядок вызова динамических конструкторов глобальных объектов в C++
>> определен только внутри одной единицы компиляции. Порядок выполнения
>> инициализации между единицами компиляции неопределен, он может быть
>> разным для разных запусков одной и той же программы. То же самое с
>> деструкторами.
> Не оно. В моём случае нет ни статических объектов в модуле ни кода 
> выполняющегося в момент dlopen() и dlclose(). И подключение 
> подразумевает только разрешение зависимостей внешних библиотек 
> линкером, опять же в моём случае это QTCore, QTGui и всё что они 
> тянут. Возможно, конечно, что-то есть из статики в этих библиотеках, 
> но независимый тест на прототипчике этой проблемы в QTCore, QTGui не 
> выявил. Эта проблема воспроизводится только в рабочем окружении 
> программы.
Таки проблема в QT 4.7.0. Задался тут целью выяснить, что из нового в 
Сизифе вызывает эту проблему. Взял последний Branch 5.1, где такой 
проблемы нет, и начал поэтапно обновлять до Сизифа. Обновил glibc - 
полёт нормально. А вот сразу после обновления QT проблема и полезла. 
Обновление QT прошло чисто, не потянув за собой XOrg и KDE4, поэтому 
есть основания грешить именно на QT 4.7.0.

Пойду переоткрою багу на QTшной багзиле.

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-22 10:13       ` Roman Savochenko
@ 2010-09-22 11:10         ` Alexander Bokovoy
  2010-09-22 12:31           ` Roman Savochenko
  0 siblings, 1 reply; 16+ messages in thread
From: Alexander Bokovoy @ 2010-09-22 11:10 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2010/9/22 Roman Savochenko <rom_as@diyaorg.dp.ua>:
>  13.09.2010 08:59, Roman Savochenko пишет:
>>>
>>> Порядок вызова динамических конструкторов глобальных объектов в C++
>>> определен только внутри одной единицы компиляции. Порядок выполнения
>>> инициализации между единицами компиляции неопределен, он может быть
>>> разным для разных запусков одной и той же программы. То же самое с
>>> деструкторами.
>>
>> Не оно. В моём случае нет ни статических объектов в модуле ни кода
>> выполняющегося в момент dlopen() и dlclose(). И подключение подразумевает
>> только разрешение зависимостей внешних библиотек линкером, опять же в моём
>> случае это QTCore, QTGui и всё что они тянут. Возможно, конечно, что-то есть
>> из статики в этих библиотеках, но независимый тест на прототипчике этой
>> проблемы в QTCore, QTGui не выявил. Эта проблема воспроизводится только в
>> рабочем окружении программы.
>
> Таки проблема в QT 4.7.0. Задался тут целью выяснить, что из нового в Сизифе
> вызывает эту проблему. Взял последний Branch 5.1, где такой проблемы нет, и
> начал поэтапно обновлять до Сизифа. Обновил glibc - полёт нормально. А вот
> сразу после обновления QT проблема и полезла. Обновление QT прошло чисто, не
> потянув за собой XOrg и KDE4, поэтому есть основания грешить именно на QT
> 4.7.0.
>
> Пойду переоткрою багу на QTшной багзиле.
Номер дефекта в JIRA?

-- 
/ Alexander Bokovoy

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [devel] Коллизия символов разных динамических библиотек
  2010-09-22 11:10         ` Alexander Bokovoy
@ 2010-09-22 12:31           ` Roman Savochenko
  0 siblings, 0 replies; 16+ messages in thread
From: Roman Savochenko @ 2010-09-22 12:31 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 1042 bytes --]

  22.09.2010 14:10, Alexander Bokovoy пишет:
>>> Не оно. В моём случае нет ни статических объектов в модуле ни кода
>>> выполняющегося в момент dlopen() и dlclose(). И подключение подразумевает
>>> только разрешение зависимостей внешних библиотек линкером, опять же в моём
>>> случае это QTCore, QTGui и всё что они тянут. Возможно, конечно, что-то есть
>>> из статики в этих библиотеках, но независимый тест на прототипчике этой
>>> проблемы в QTCore, QTGui не выявил. Эта проблема воспроизводится только в
>>> рабочем окружении программы.
>> Таки проблема в QT 4.7.0. Задался тут целью выяснить, что из нового в Сизифе
>> вызывает эту проблему. Взял последний Branch 5.1, где такой проблемы нет, и
>> начал поэтапно обновлять до Сизифа. Обновил glibc - полёт нормально. А вот
>> сразу после обновления QT проблема и полезла. Обновление QT прошло чисто, не
>> потянув за собой XOrg и KDE4, поэтому есть основания грешить именно на QT
>> 4.7.0.
>>
>> Пойду переоткрою багу на QTшной багзиле.
> Номер дефекта в JIRA?
13548

С уважением, Роман

[-- Attachment #2: rom_as.vcf --]
[-- Type: text/x-vcard, Size: 301 bytes --]

begin:vcard
fn:Roman Savochenko
n:Savochenko;Roman
org:DIYA Ltd
adr:;;;Dneprodzerzinsk;Dnepropetrovsk;51925;Ukraine
email;internet:rom_as@diyaorg.dp.ua
title:Leading engineer-programer
tel;work:+380569262025
tel;fax:+380569262025
tel;cell:+380679859815
url:http://diyaorg.dp.ua
version:2.1
end:vcard


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2010-09-22 12:31 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-11 19:02 [devel] Коллизия символов разных динамических библиотек Roman Savochenko
2010-09-12 15:42 ` Roman Savochenko
2010-09-12 16:13   ` Денис Смирнов
2010-09-13  7:35     ` Roman Savochenko
2010-09-12 19:47   ` Alexander Bokovoy
2010-09-13  5:59     ` Roman Savochenko
2010-09-13  6:05       ` Roman Savochenko
2010-09-13  6:34         ` Alexander Bokovoy
2010-09-13 15:49           ` Roman Savochenko
2010-09-22 10:13       ` Roman Savochenko
2010-09-22 11:10         ` Alexander Bokovoy
2010-09-22 12:31           ` Roman Savochenko
2010-09-13 15:50 ` Dmitry V. Levin
2010-09-13 16:12   ` Roman Savochenko
2010-09-13 16:15     ` Dmitry V. Levin
2010-09-14  5:29       ` Roman Savochenko

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git