From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-0.4 required=5.0 tests=AWL,BAYES_00, DNS_FROM_OPENWHOIS,FUZZY_XPILL autolearn=no version=3.2.5 X-Virus-Scanned: by amavisd-new using ClamAV at diyaorg.dp.ua Message-ID: <4C8CF4EF.1090403@diyaorg.dp.ua> Date: Sun, 12 Sep 2010 18:42:39 +0300 From: Roman Savochenko User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.*) Gecko/20100402 Thunderbird/3.0pre MIME-Version: 1.0 To: devel@lists.altlinux.org References: <4C8BD22F.1010908@diyaorg.dp.ua> In-Reply-To: <4C8BD22F.1010908@diyaorg.dp.ua> Content-Type: multipart/mixed; boundary="------------050800030006060302020301" Subject: Re: [devel] =?koi8-u?b?68/MzMnaydEg08nN18/Mz9cg0sHaztnIIMTJzsHNyd7F?= =?koi8-u?b?08vJyCDCycLMyc/Uxcs=?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Sep 2010 15:41:47 -0000 Archived-At: List-Archive: List-Post: This is a multi-part message in MIME format. --------------050800030006060302020301 Content-Type: text/plain; charset=KOI8-U; format=flowed Content-Transfer-Encoding: 8bit 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. И на этом этапе происходит ошибочная линковка! Думаю для программ, единоразово подключающих свои модули, это не проблема. Однако есть программы, которые могут отбрасывать модули во время работы и подключать новые, например для горячего их обновления. Так вот для них это может оказаться проблемой, правда только для модулей с собственными, достаточно тяжёлыми, зависимостями. С уважением, Роман --------------050800030006060302020301 Content-Type: text/x-vcard; charset=utf-8; name="rom_as.vcf" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="rom_as.vcf" 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 --------------050800030006060302020301--