Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему нельзя просто заменить DLL 
:(
    Опции темы
Karadul
Дата 27.2.2013, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Есть модуль pyopenssl, который представляет интерфейс  к библиотекам OpenSSL, которые лежат в потрохах модуля, через .pyd файлы. Если заменить библиотеки OpenSSL новой версией, питон падает с сегфолтом во время работы программы. Как это обьяснить?

Это сообщение отредактировал(а) Karadul - 27.2.2013, 14:42
PM MAIL   Вверх
похмелье
Дата 28.2.2013, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.2.2009

Репутация: нет
Всего: 1



Karadul, возможно api библиотеки изменилось. Не очень понятно какие файлы есть, и какие были заменены.
PM   Вверх
bilbobagginz
Дата 28.2.2013, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 6
Всего: 317



Karadul, не рекомендуется заменять бинарные библиотеки "под ногами" у питоновых модулей.
иногда для обновления нужно обновить бинарные, а потом перекомпилить ту же версию питонового модуля (т.е. грубо говоря убрать *.pyc файлы)
А иногда нужно обновлять и конфетку (бинарник библиотеки), и обертку (т.е. соотв. питонового модуля).





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Karadul
Дата 28.2.2013, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



похмельеhttps://pypi.python.org/pypi/pyOpenSSL . Заменены были 2 библиотеки libeay32.dll и ssleay32.dll.

Цитата(bilbobagginz @  28.2.2013,  12:15 Найти цитируемый пост)
Karadul, не рекомендуется заменять бинарные библиотеки "под ногами" у питоновых модулей.
иногда для обновления нужно обновить бинарные, а потом перекомпилить ту же версию питонового модуля (т.е. грубо говоря убрать *.pyc файлы)
А иногда нужно обновлять и конфетку (бинарник библиотеки), и обертку (т.е. соотв. питонового модуля).


А почему так? Обычно программы прекрасно работают, если заменить библиотеки новой версией.
PM MAIL   Вверх
похмелье
Дата 28.2.2013, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.2.2009

Репутация: нет
Всего: 1



Karadul, в бинарниках версия 0.9.8, а на сайте уже 1.0.1. Возможно обратная совместимость отсутствует. Если иметь последнюю версию библиотеки на столько важно, то придётся искать отличия и править исходники pyOpenSSL. А вообще, "подсовывать" свежие dll — плохая идея, как уже было озвучено выше.
PM   Вверх
Karadul
Дата 28.2.2013, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



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

Это сообщение отредактировал(а) Karadul - 28.2.2013, 16:41
PM MAIL   Вверх
похмелье
Дата 28.2.2013, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.2.2009

Репутация: нет
Всего: 1



Karadul, надо смотреть исходники обоих версий библиотек, выяснить при вызове какой функции происходит ошибка и т.д. Возможно, скомпилировать обе версии собственноручно и убедиться что ошибка имеет место быть.
PM   Вверх
Karadul
Дата 28.2.2013, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



А что лежит внутри pyd файлов? К чему они привязываются?
PM MAIL   Вверх
похмелье
Дата 28.2.2013, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.2.2009

Репутация: нет
Всего: 1



Karadul, pyd — это dll, имеющая специфические функции, которые "оформлены под питон" в виде модуля (есть __init__, функции принимают объекты питона, возвращают объекты питона…).
Если интересно, то http://docs.python.org/3/c-api/index.html
PM   Вверх
Karadul
Дата 28.2.2013, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



В pyopenssl, как я понял, эти pyd и вызывают функции из дллок опенссл. Так вот вопрос, как они к ним привязываются? Может, там не имена указаны, а адреса функций или что-то такое?
PM MAIL   Вверх
bilbobagginz
Дата 28.2.2013, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 6
Всего: 317



Цитата(Karadul @  28.2.2013,  13:00 Найти цитируемый пост)
 Обычно программы прекрасно работают, если заменить библиотеки новой версией. 

обычно != всегда




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Karadul
Дата 1.3.2013, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Обычно новые версии обратно совместимы со старыми, не думаю, что openssl - исключение.
PM MAIL   Вверх
похмелье
Дата 1.3.2013, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 19.2.2009

Репутация: нет
Всего: 1



Karadul, какой версией были заменены бинарники? Не просто же так OpenSSL поддерживают две версии:

user posted image

Также, если заглянуть в faq:
How does the versioning scheme work?
After the release of OpenSSL 1.0.0 the versioning scheme changed. Letter releases (e.g. 1.0.1a) can only contain bug and security fixes and no new features. Minor releases change the last number (e.g. 1.0.2) and can contain new features that retain binary compatibility. Changes to the middle number are considered major releases and neither source nor binary compatibility is guaranteed.

Therefore the answer to the common question "when will feature X be backported to OpenSSL 1.0.0/0.9.8?" is "never" but it could appear in the next minor release.


т.е. 1.0.х несовместима с 0.9.x

added:
Что гадать-то? Зайди на сайт, да посмотри.

Это сообщение отредактировал(а) похмелье - 1.3.2013, 10:04
PM   Вверх
Karadul
Дата 1.3.2013, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Просто я до этого уже ставил модули от 2.6 на 2.7 или что-то вроде такого и оно точно так же падало, вот у меня и подозрения, что что-то к чему-то слишком сильно биндится.
PM MAIL   Вверх
bilbobagginz
Дата 3.3.2013, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 6
Всего: 317



Karadul, существуют несовместимости 2.6 <-> 2.7, 2.5 <-> выше, и т.д. 
все надо проверять, писать совместимо, с "мягким" маршрутом миграции. Такова жизнь осторожного программиста.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1074 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.