powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / pdb для icuuc30.dll
22 сообщений из 22, страница 1 из 1
pdb для icuuc30.dll
    #40004833
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При выполнении select-запроса внутри icuuc30.dll наружу выбрасывается исключение. Не могу понять где именно оно там происходит. Проявляется только в 64-битной версии. Где можно нарыть pdb-файлов для Firebird Embed 2.5.8 27089?
ЗЫ: в выложенных бинарях не нашёл
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40004840
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

у IBM спрашивай.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40004855
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

раз выбрасывается - значит оно никому не нужно ? :)

Это исключение не обрабатывается в ICU ? И попадает - куда ? Клиенту ? И что он видит ?
Стек вызовов (хотя бы по модулям FB) есть ?

В 2.5 исходники ICU присутствуют в репозитории Firebrid.
Это значит, что каждый может его собрать так, как считает нужным.
И - нет - мы не включаем в дистрибутив все подряд pdb. Только необходимый минимум.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40004883
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исключение выходит наружу и роняет нашу службу. Стек слишком мутный, чтобы понять в чём проблема. Но на его топе - несколько вызовов внутри icuuc30.dll. Пока разбираюсь.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005054
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenИсключение выходит наружу и роняет нашу службу.
ну и чего вы там суёте, что ни у кого такой ошибки нет, а у вас есть?
И потом, последний релиз это 2.5.9. Какого ... вы спрашиваете про 2.5.8? Всё уже, проехали, 2.5.8 забыт и никому не интересен.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005058
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p.s. извиняюсь за грубость, но 2.5.8 на sf.net нету (там 2.5.7 последняя), а на firebirdsql.org - уже 2.5.9.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005062
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
упс, оно только в additional dowloads
https://www.firebirdsql.org/en/firebird-2-5-8/
тем не менее, рекомендую проверить всё то же самое на 2.5.9. А у же потом про багрепорты думать.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005077
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока не понятно кто виноват в этой ситуации. Возможно что в функцию API FB передаётся некорректный utf8 или что-то типа того. На руках есть только дамп с мутным стеком, так что до сих пор мало что понятно. Стэк мутный, т.к. исключение сначала захватывается внутрь std::future<void>, а потом перевыбрасывается при вызове std::future<void>::get(). std::future<void> даёт приемущества при написании кода, но с ним начинается ж..па при разборе дампов.

вот что выдаёт windbg на !analyze -v
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


KEY_VALUES_STRING: 1

    Key  : Analysis.CPU.mSec
    Value: 1389

    Key  : Analysis.DebugAnalysisProvider.CPP
    Value: Create: 8007007e on ADENIS

    Key  : Analysis.DebugData
    Value: CreateObject

    Key  : Analysis.DebugModel
    Value: CreateObject

    Key  : Analysis.Elapsed.mSec
    Value: 2532

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 214

    Key  : Analysis.System
    Value: CreateObject

    Key  : Timeline.OS.Boot.DeltaSec
    Value: 57692

    Key  : Timeline.Process.Start.DeltaSec
    Value: 57665

    Key  : WER.OS.Branch
    Value: vb_release

    Key  : WER.OS.Timestamp
    Value: 2019-12-06T14:06:00Z

    Key  : WER.OS.Version
    Value: 10.0.19041.1

    Key  : WER.Process.Version
    Value: 5.0.0.4451


ADDITIONAL_XML: 1

OS_BUILD_LAYERS: 1

NTGLOBALFLAG:  0

APPLICATION_VERIFIER_FLAGS:  0

CONTEXT:  (.ecxr)
rax=0000000000000000 rbx=0000000000000000 rcx=0000007c786fd050
rdx=00000000298480ce rsi=000000004a88c2c0 rdi=0000007c786fd720
rip=000000004a8817b5 rsp=0000007c786fcf80 rbp=0000007c786ffe90
 r8=0000000000000009  r9=0000007c786fcf58 r10=000000000000001a
r11=0000007c786fcdb0 r12=ffffffffffffffff r13=00007ffeeeb0c7d8
r14=0000000000000001 r15=0000007c786fd720
iopl=0         nv up ei pl nz na pe nc
cs=0033  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
icuuc30!utf8_back1SafeBody_3_0+0x6c45:
00000000`4a8817b5 488d4c2430      lea     rcx,[rsp+30h]
Resetting default scope

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 000000004a88221e (icuuc30!utf8_back1SafeBody_3_0+0x00000000000076ae)
   ExceptionCode: 40000015
  ExceptionFlags: 00000000
NumberParameters: 0

PROCESS_NAME:  PrimeDB.exe

ERROR_CODE: (NTSTATUS) 0x40000015 - {                              }  %hs

EXCEPTION_CODE_STR:  40000015

STACK_TEXT:  
0000007c`786fcf80 00000000`4a88221e     : 00000000`00000080 00000000`0000a000 00000000`00000000 0000007c`786fd720 : icuuc30!utf8_back1SafeBody_3_0+0x6c45
0000007c`786fd530 00000000`4a88c301     : 00000000`000ec000 00000000`00007000 00000000`00000000 00000000`ffffffff : icuuc30!utf8_back1SafeBody_3_0+0x76ae
0000007c`786fd560 00007ffe`ee98b8b7     : 00000000`00000000 00000000`4a88c2c0 00000000`00000000 00000000`00000000 : icuuc30!utf8_back1SafeBody_3_0+0x11791
0000007c`786fd590 00007ffe`f10549b3     : 0000007c`786fd7d0 00007ffe`f10f625c 00000000`00000000 0000007c`786fd768 : KERNELBASE!UnhandledExceptionFilter+0x1e7
0000007c`786fd6b0 00007ffe`f103b766     : 00000000`00000001 0000007c`786fdcd0 00000000`00000000 00007ffe`f0fd210f : ntdll!RtlUserThreadStart$filt$0+0xa2
0000007c`786fd6f0 00007ffe`f105111f     : 00000000`00000000 0000007c`786fdcd0 0000007c`786fe730 00000000`00000000 : ntdll!_C_specific_handler+0x96
0000007c`786fd760 00007ffe`f0ffb474     : 0000007c`786fe730 00000000`00000001 00000000`00000000 0000007c`786fd7d0 : ntdll!RtlpExecuteHandlerForException+0xf
0000007c`786fd790 00007ffe`f0ffb1c5     : 80000000`0000001f 0000007c`786fe5d0 00000000`00000000 00007ffe`f0ffb131 : ntdll!RtlDispatchException+0x244
0000007c`786fdea0 00007ffe`ee8a3e49     : 0000007c`786fe840 0000007c`786fe820 00000000`0000000f 00000000`00000092 : ntdll!RtlRaiseException+0x185
0000007c`786fe710 00007ff7`907c0b6f     : 0000007c`786fe820 00000000`0000000f 0000024e`f5c3bd40 00007ff7`907c0b30 : KERNELBASE!RaiseException+0x69
0000007c`786fe7f0 00007ff7`907c0d51     : 0000024e`f55d9210 0000024e`f55d9210 0000024e`f4e312a8 00000000`00000001 : PrimeDB+0x250b6f
0000007c`786fe920 00007ff7`90589389     : 00000000`00000000 00000000`00000430 00000000`00000000 00007ff7`907bfddf : PrimeDB+0x250d51
0000007c`786fe950 00007ff7`905893a7     : 00007472`6f706d00 00007ff7`905e681d 0000024e`f55d9210 00007ff7`907bff58 : PrimeDB+0x19389
0000007c`786fe980 00007ff7`907c222b     : 00000000`00000000 00007ff7`90589367 0000c35d`7a450ef7 00000000`00000001 : PrimeDB+0x193a7
0000007c`786fe9c0 00007ff7`90652fd3     : 0000007c`786fea30 00000000`00000000 0000024e`f55d9210 0000024e`f55d9210 : PrimeDB+0x25222b
0000007c`786fea10 00007ff7`905c5374     : 0000007c`786fec68 0000024e`f55d9210 0000024e`f4e312a8 0000007c`786fea78 : PrimeDB+0xe2fd3
0000007c`786fea70 00007ff7`9059b674     : 0000007c`786ff380 00000000`00000000 0000024e`f4e31248 0000024e`f55a8050 : PrimeDB+0x55374
0000007c`786fead0 00007ff7`9059d353     : 0000c35d`7a4512f7 00000000`00000000 00000000`00000001 00000000`00000001 : PrimeDB+0x2b674
0000007c`786ff6b0 00007ff7`9059ea0c     : 00000000`ffffffff 00007ff7`9095e6b0 00007ff7`9095e6b0 00000000`00000001 : PrimeDB+0x2d353
0000007c`786ff850 00007ff7`905959cf     : 02762762`76276275 0000024e`f2f60000 00000000`00000140 00007ff7`907e0cbb : PrimeDB+0x2ea0c
0000007c`786ffba0 00007ff7`905eb5e9     : 0000024e`f55a7f00 0000024e`f885a950 0000024e`f55a7f00 0000024e`f55a7f10 : PrimeDB+0x259cf
0000007c`786ffc30 00007ff7`905eb3a7     : 0000007c`770feda0 0000024e`f2f685b0 00000000`00000000 0000024e`efb960c0 : PrimeDB+0x7b5e9
0000007c`786ffd90 00007ff7`905ec68c     : 00000004`00000004 0000024e`f52b5760 0000007c`770feda0 0000007c`786ffdc8 : PrimeDB+0x7b3a7
0000007c`786ffdc0 00007ff7`90589349     : 00000000`00000000 0000007c`770feda0 00000000`00000005 00000000`00000005 : PrimeDB+0x7c68c
0000007c`786ffe00 00007ff7`908847f9     : 0000024e`f44010e0 0000024e`f44010e0 00000000`00000000 00000000`00000000 : PrimeDB+0x19349
0000007c`786ffe30 00007ffe`f0ae6fd4     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : PrimeDB+0x3147f9
0000007c`786ffe60 00007ffe`f0ffcec1     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0x14
0000007c`786ffe90 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21


SYMBOL_NAME:  icuuc30!utf8_back1SafeBody_3_0+76ae

MODULE_NAME: icuuc30

IMAGE_NAME:  icuuc30.dll

STACK_COMMAND:  ~29s ; .ecxr ; kb

FAILURE_BUCKET_ID:  FATAL_APP_EXIT_40000015_icuuc30.dll!utf8_back1SafeBody_3_0

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

IMAGE_VERSION:  3.0.0.0

FAILURE_ID_HASH:  {aef60841-774c-8d77-6121-3cb5b7017924}

Followup:     MachineOwner
---------

Но если посмотреть на utf8_back1SafeBody, то видно что она проста как пробка. Так что единственное, что там может произойти - это AV. Отсюда предположение на некорректную строку в utf8, переданную в API FB. Правда, не факт, что падает в utf8_back1SafeBody. Это видно по слишком большим смещениям (+0x6c45 например), а utf8_back1SafeBody очень короткая. Т.к. меня нету оригинального icuuc30.pdb, я не могу его подсунуть в windbg

PS: на 2.5.9 конечно-же проверю, если пойму как это можно воспроизвести.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005081
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А при чём тут Firebird ?
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005082
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
А при чём тут Firebird ?
В смысле - не вижу его в стеке, совсем.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005084
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
hvlad
А при чём тут Firebird ?
В смысле - не вижу его в стеке, совсем.


ArtDen
Стэк мутный, т.к. исключение сначала захватывается внутрь std::future<void>, а потом перевыбрасывается при вызове std::future<void>::get()
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005102
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenСтэк мутный

Нет совершенно ничего мутного в этом стэке. Ошибка происходит на PrimeDB+0x250b6f, а
icuuc30 это системная библиотека Windows 10, не имеющая никакого отношения к Firebird.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005108
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отладчик говорит, что icuuc30.dll была загружена из каталога нашего приложения D:\PrimeDB\firebird-client-2.5.x. И если бы это была виндовая либа, то pdb к ней подтянулся в отладчик автоматом.
PS: Я вообще не обвиняю FB. Пока склонен считать, что это мой косяк. Но без оригинальной pdb и без возможности повторения я бессилен.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005111
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDenОтладчик говорит, что icuuc30.dll была загружена из каталога нашего приложения
D:\PrimeDB\firebird-client-2.5.x.

И вот тут-то и есть косяк: вы винде подсунули не ту библиотеку на которую она
рассчитывала. kernel32.dll от XP в каталог своего приложения положить не пробовали? Тоже
будет смешно, наверное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005112
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
icuuc30 это системная библиотека Windows 10
И даже источник такого утверждения имеется ?
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005113
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen,

я так и не понял - проблема воспроизводится или нет ?
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005120
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Внезапно при анализе логов появилась идея как всё это можно воспроизвести. И воспроизвелось. Оказалось, что падает глючный стандартный std::regex не некоторых входных данных прямо перед вызовом SQL-запроса. Недавно переходил с boost::regex на std::regex, в надежде, что его подправили в плане скорости и глючности, и похоже зря.

Каким образом при этом на вершине стэка в дампе при этом оказался icuuc30.dll - я ума не приложу O_o. Возможно что это глюк передачи и перевыброса исключения через std::future и std::promise на 64-битной платформе.

PS: тему можно закрывать, а автора банить, чтобы не порочил светлое имя FB ))
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005126
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladИ даже источник такого утверждения имеется ?

Вышеприведённый дамп, где utf8_back1SafeBody_3_0 вызывается из
KERNELBASE!UnhandledExceptionFilter.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005132
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

пальцем в небо, ничего нового.
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005133
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ArtDen
Недавно переходил с boost::regex на std::regex, в надежде, что его подправили в плане скорости и глючности, и похоже зря.
К слову - FB4 перешёл на re2 для regexp'ов.

ArtDen
Каким образом при этом на вершине стэка в дампе при этом оказался icuuc30.dll - я ума не приложу O_o.
Это просто лучшее, что смог показать отладчик, не имея полного набора pdb.

Ты сам вполне правильно написал:
ArtDen
не факт, что падает в utf8_back1SafeBody. Это видно по слишком большим смещениям (+0x6c45 например), а utf8_back1SafeBody очень короткая
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005170
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЭто просто лучшее, что смог показать отладчик, не имея полного набора pdb.

Приписать адрес другой процедуре он может, но перепутать модули - нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
pdb для icuuc30.dll
    #40005187
ArtDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я всё-таки за кривой механизм перевыброса исключения. В С++ есть механизм передачи исключений между потоками. Он используется в std::future и std::promise примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
int calc_or_throw(int value)
{
	if (value == 666)
		throw "Bad value";

	return value * value;
}

...

// запускаем выполнение calc_or_throw в отдельном потоке
// res1 - это std::future<int>
auto res1 = thread_pool.exec(calc_or_throw, 42); 

int val1 = res1.get(); // Получаем результат выполнения calc_or_throw 

printf("val1 = %d\n", val1);

...

auto res2 = thread_pool.exec(calc_or_throw, 666);

int val2 = res2.get(); // <- исключение из calc_or_throw вылезет наружу только вот тут

printf("val2 = %d\n", val2);


При выполнении calc_or_throw с аргументом 666 исключение захватится и запишется в res2, а затем будет перевыброшено при вызове res2.get(). И callstack, который попал в дамп будет зависеть от того, насколько корректно реализован механизм перевыброса исключения. Пока что я вижу, что он реализован не особо хорошо.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / pdb для icuuc30.dll
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]