Comments 52
UFO just landed and posted this here
UFO just landed and posted this here
Не вижу ничего преступного в том что человек похвастал тем, что он реально сделал, что имеет реальную пользу, и что реально не является очень простой задачей, тем более что он сделал это не просто так, а после соот-щего топика.
+31
Если бы пост начинался %известное лицо% пофиксило баг #ххххх — то наш bvfalcon и много другой школоты бы пост заплюсовало.
А так как это всего лишь смертный davinchi сделал, то школоте не понять=)
davinchi — спасибо за пост, так коротко живо и интересно написано=)
А так как это всего лишь смертный davinchi сделал, то школоте не понять=)
davinchi — спасибо за пост, так коротко живо и интересно написано=)
+8
хвастовство — грех
-11
Я повторюсь: мне был интересен этот баг, поскольку он был очень нестандартным: стоило поменять порядок аргументов у f() и всё работает. Стоит объявить f() до вызова и всё работает. Баг редкий и напорись на него кто-нибудь другой искали бы его в PHP коде несколько недель.
Хотя да, багов тысячи. Однако интересных не так много, и наверное не стоило публиковать её всем: не всем интересно программирование.
Хотя да, багов тысячи. Однако интересных не так много, и наверное не стоило публиковать её всем: не всем интересно программирование.
+13
Стоило, стоило. Уж всяко лучше, чем всякая политота и «меня опять обидели в %название_компании%».
+10
UFO just landed and posted this here
Напротив. Хабр изначально был ресурсом технической направленности. То, что в последнее время он медленно, но верно тонет в массе новостных, политических, социальных и псевдофилософских статей, генерирумых людьми, которые не могут не писать, хотя писать им не о чем — это ещё не повод прекращать писать технические статьи.
+10
UFO just landed and posted this here
О боже… Ещё бы написал «Хабр уже не тот». Я и сам айтишник, но нет ничего плохого в том, что ресурс растёт. От этого технических статей меньше не становится. Не нравится топик — пройди мимо, слава богу их сейчас предостаточно.
-6
Проходите мимо-проходите мимо… В том что и дело что не хотелось бы что бы проходили мимо.
У меня вот есть друг который на хабр не заходит именно потому что, цитирую: «да чо там читать, на лоре и то больше интересного пишут, один пиар сайтов и ничего интересного для айтишника.».
Статей меньше становится только потому что авторы перестали писать о технических вещах и начали писать на другие, более популярные темы.
У меня вот есть друг который на хабр не заходит именно потому что, цитирую: «да чо там читать, на лоре и то больше интересного пишут, один пиар сайтов и ничего интересного для айтишника.».
Статей меньше становится только потому что авторы перестали писать о технических вещах и начали писать на другие, более популярные темы.
+1
UFO just landed and posted this here
Хотя публиковать разборы старых и сложных багов идея интересная. Особенно очень глубокие (вплоть до физики) баги, как например известный баг с перезагрузкой бортовых компьютеров.
+4
true. true… ©
;)
;)
+1
UFO just landed and posted this here
Красавец
+2
Держите награду
+6
Еще бы старые баги не вытаскивали бы, а то переодически бывает, на моей памяти яркий релиз 5.2.0, когда перестали работать параметры переданные по ссылке, все передавалось по значению.
0
Мир стал немного лучше. ) Спасибо!
+2
На php настолько плохо с отладкой, что вы топики про ловлю бага будете клепать? Не верю. Смешно.
-16
Ещё раз: на тот момент код компилятора/VM PHP я видел впервые. Потому так сложно искалось.
С отладкой действительно есть проблемы: я не нашёл вот так сразу способа распечатать байткод. Если знаете такой — подскажите.
С отладкой действительно есть проблемы: я не нашёл вот так сразу способа распечатать байткод. Если знаете такой — подскажите.
+3
UFO just landed and posted this here
После долгих мыканий и частичной прогонки отладчиком сделал следующее: Добавил в тело zend_fetch_var.* вызов fprintf(stderr, "%s\n", __func__); (там используется кодогенерация), потом посмотрел вывод, по нему нашёл место в сгенерированном коде. Добавил распечатку значения указателя на эту переменную и указателя EG(uninitialized_zval_ptr), заметил что после входа и до return'а значение меняется. Отладчиком ещё раз посмотрел: единственное место где оно могло меняться был тот вызов SEPARATE_ZVAL_TO_MAKE_IS_REF.
Не факт, что патч абсолютно правильный (возможно, нужно всё таки делать IS_REF, тогда сначала надо создать ptr_ptr), но место ошибки найдено верно.
Не факт, что патч абсолютно правильный (возможно, нужно всё таки делать IS_REF, тогда сначала надо создать ptr_ptr), но место ошибки найдено верно.
+1
Автором проделана весьма серьезная работа, учитывая объем исходников PHP, и их сложность. Это не может не вызывать уважение! Потрясающий труд.
+5
UFO just landed and posted this here
Отлично! Спасибо!
+1
Всё оказалось ещё немного более интересным: баг наступал только если в порядковом номере аргумента был установлен второй бит.
Поэтому мой патч оказался не верным, однако баг был найден правильно. Интересно, помогло ли это майнтейнеру бага.
Поэтому мой патч оказался не верным, однако баг был найден правильно. Интересно, помогло ли это майнтейнеру бага.
0
UPD: Баг был потому, что ошибочно опознавался номер аргумента как специальный флаг, который должен делать переменную REF'ом, что и ошибочно делалось. В остальном всё правильно.
0
Sign up to leave a comment.
Ловля бага #52001 в PHP 5.3: указатели и неициализированные переменные