metaclass: (Default)
[personal profile] metaclass
Опять залез в какие-то дебри ебеней.
На сей раз libusb-1.0 - баг в winusb-бэкенде для этой либы - на некоторых компах валится с AV.

Причина: libusb_init сделана антихаскельно таким образом, что можно:
либо передать в нее указатель на указатель на контекст - и тогда она создаст контекст и вернет его нам и далее мы будем его использовать везде для вызовов.
либо передать NULL, тогда контекст будет сохранен в глобальной переменной usbi_default_context и будет браться всегда оттуда.

При этом есть отладочная функция usbi_log_v, которой нужно передавать контекст, и если его передать равным NULL - оно берет контекст из usbi_default_context. Дальше этот контекст используется для анализа уровня логов и наличия отладочных сообщений вообще.

При этом возникает такая ситуация: мы инициализируем либу, передавая указатель на указатель на контекст. Либа при этом не трогает usbi_default_context и он остается NULL. Далее, в poll_windows.c поголовно все вызовы логов выглядят так: usbi_warn(NULL, ...

И все это внутри usbi_log_v успешно дохнет с av, т.к. все контексты NULL, а к ним происходит обращение.

Но проблема в том, что обращение это происходит только при ошибках, и только в релизной версии. Поэтому отловить это до сих пор никто не отловил.

Date: 2012-08-06 01:53 pm (UTC)
From: [identity profile] dr-hyder.livejournal.com
Если я правильно понял, нужно инициализировать либу не своим контекстом а дефолтным(NULL), тогда ничего дохнуть не будет(это я не как должно быть, а как сделать чтоб она в данном случае не дохла). Но не понятно зачем тогда вообще давать функциональность инициировать не дефолтным контекстом, раз сама либа использует дефолтный контекст в логах? Получается функциональность не юзабельна на практике или я чего не догнал?

Date: 2012-08-06 01:59 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Да не учли этот вариант использования, а заметить ошибку - это надо обязательно windows, обязательно явный контекст, обязательно релизная версия и обязательно компьютер на котором подтормаживает usb чтобы были таймауты.

Т.е. во всех других вариантах работает :)

Date: 2012-08-06 02:21 pm (UTC)
From: [identity profile] w00dy.livejournal.com
Ребе, это ж опенсурс. Чего вы от него хотели?

Date: 2012-08-06 02:52 pm (UTC)
From: [identity profile] denisioru.livejournal.com
дада, не нравица? возьми и перепешы блядь!

Date: 2012-08-06 03:10 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Уже у себя переписал, и баг-репорт отослал.

Date: 2012-08-06 03:15 pm (UTC)
From: [identity profile] denisioru.livejournal.com
Такими темпами победа линукса не за горами!!111

Date: 2012-08-06 03:31 pm (UTC)
From: [identity profile] w00dy.livejournal.com
А зря ребе. Был бы повод рассказывать какая винда глючная.

Date: 2012-08-07 05:52 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Патч отправил?

Date: 2012-08-07 06:11 am (UTC)
From: [identity profile] metaclass.livejournal.com
Там пару строк поправить.
Впрочем, судя по баг-трекеру, в гробу там все видели и патчи и баг-репорты.

Date: 2012-08-07 06:13 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Для таких ситуаций есть возможность сделать fork

fork'аем репис, мёржим в него наш фикс и ещё фиксы что нужны, рассылаем письмо авторам с уведомлением, что если не перестанут пинать хуи - будем тянуть одеяло на себя, уведомляем мейнтейнеров.

Ну или просто попросить права доступа к трекеру и репосу.

Date: 2012-08-06 06:32 pm (UTC)
From: [identity profile] thinker8086.livejournal.com
Интересно, а сколько и чьего времени отнял поиск и локализация этого бага?

Date: 2012-08-06 06:40 pm (UTC)
From: [identity profile] metaclass.livejournal.com
3 часа моего времени. Сегодня с полвторого до полпятого.

Date: 2012-08-07 05:51 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Ребе, ну так пропатчи и зашли им, делов-то.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 22nd, 2025 04:55 pm
Powered by Dreamwidth Studios