Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6273
Яс. Нужен сильно развернутый ответ.
https://habr.com/ru/company/abbyy/blog/205070/
6 сен 19, 00:31    [21965015]     Ответить | Цитировать Сообщить модератору
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6273
Ну и я вроде и не против.

Но не у меня падает и ломается.
6 сен 19, 00:33    [21965016]     Ответить | Цитировать Сообщить модератору
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
hvlad
Member

Откуда:
Сообщений: 10531
Siemargl
В данному случае UB такое: для this == nullptr - реакция линтера "условие всегда ложно"
А там не такой код. И это зря. Он конечно может понять, что this в переменную скопировали, тут не нужно гением быть.
Такие проверки просто так не появляются. Так что - нет, оно не всегда ложно, увы.

Siemargl
А то тут малограмотных полфорума, банят то, что не понимают.
Совершенно согласен - полно малограмотных, считающих что понимают чужой код по одной строке.

Siemargl
Нужен сильно развернутый ответ.
Который не имеет ни малейшего отношения к приведенному фрагменту кода.

Может пора снять шоры с глаз и подумать - а зачем оно там на самом деле ?

И заодно рассказать - к каким ужасам оно приводит ? :)
6 сен 19, 00:42    [21965018]     Ответить | Цитировать Сообщить модератору
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
hvlad
Member

Откуда:
Сообщений: 10531
Siemargl
Ну и я вроде и не против.
Вот и хорошо.

Siemargl
Но не у меня падает и ломается.
Оно падало не там, я уже говорил.
Уже не падает, кстати.
6 сен 19, 00:43    [21965019]     Ответить | Цитировать Сообщить модератору
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
hvlad
Member

Откуда:
Сообщений: 10531
hvlad
И это зря.
И это НЕ зря
:)
6 сен 19, 00:44    [21965020]     Ответить | Цитировать Сообщить модератору
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6273
hvlad
...
Siemargl
Нужен сильно развернутый ответ.
Который не имеет ни малейшего отношения к приведенному фрагменту кода.

Может пора снять шоры с глаз и подумать - а зачем оно там на самом деле ?

И заодно рассказать - к каким ужасам оно приводит ? :)

Я же сказал, что проверять надо было раньше 21964759. К ужасам лишняя бесполезная проверка не приводит.

Но шоры можно и снять, слушаю внимательно вашу версию.
6 сен 19, 00:48    [21965022]     Ответить | Цитировать Сообщить модератору
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
hvlad
Member

Откуда:
Сообщений: 10531
Siemargl
Я же сказал, что проверять надо было раньше
А ты каждый вызов каждого метода проверяешь указатель объекта на нулл ?
Можешь верить, можешь не верить, но в реально подозрительных местах она есть.
Но, в позу стать конечно проще (21964801)

Siemargl
К ужасам лишняя бесполезная проверка не приводит.
Ну, хоть что-то :)
Насчёт бесполезности - тут не тебе судить.

Siemargl
Но шоры можно и снять, слушаю внимательно вашу версию.
Вот предыдущая версия данного кода, до того, как ф-ция EXE_find_request стала методом JrdStatement::findRequest

jrd_req* EXE_find_request(thread_db* tdbb, jrd_req* request, bool validate)
{
...
/* I found a core file from my test runs that came from a NULL request -
 * but have no idea what test was running.  Let's bugcheck so we can
 * figure it out
 */
	if (!request)
		BUGCHECK /* REQUEST */ (167);	/* msg 167 invalid SEND request */

И появилась эта проверка ещё во времена FB1, а то и IB

И выкидывать её просто потому, что линтер не велит - нафиг-нафиг.
6 сен 19, 00:57    [21965026]     Ответить | Цитировать Сообщить модератору
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6273
hvlad,

Ну я тоже грешен, и излишние проверки потом не удаляю..

Но код совсем не идентичен.

В Си версии был входной контракт, что request != NULL, а в С++ этот контракт должен был вынесен на создание объекта JrdStatement ( в этом куске кода не видно, есть ли он)

И более того, в С коде должен был быть аналогичный контракт на tdbb != NULL, а вот в С++ версии его не видно (возможно в макросе SET_TDBB, но вряд ли).

Собственно, пора закруглять философскую тему. Думаю, мало кому интересно.
6 сен 19, 01:23    [21965030]     Ответить | Цитировать Сообщить модератору
 Re: Почему Firebird всех версий падает и разрывает все соединения если повреждена строка?  [new]
Vlad F
Member

Откуда:
Сообщений: 873
Siemargl,

Очень даже интересно. На самом деле в последнее время совсем мало стало интересных тем, имхо.
6 сен 19, 20:29    [21965702]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Firebird, InterBase Ответить