Re: new / delete в UDF

2011-11-29 Пенетрантность Vlad Khorsun

Vladimir ...

С сетевым коннектом ошибка проявляется по-другому, и isql при этом не
падает.

SQL SELECT TestInsert(333) from RDB$Database;

 TESTINSERT

Statement failed, SQLCODE = -902
Error reading data from the connection.
SQL quit;


   Это действительно 2.1.3 ? Не 2.0.х ?
В firebird.log на сервере есть что-то ?
Есть возможность проверить 2.5 ?

--
Хорсун Влад 





Re: new / delete в UDF

2011-11-29 Пенетрантность Vladimir
 Вариант 3. Пытаюсь перегрузить операторы new и delete.
 Попробуй в этом варианте сделать операторы инлайновыми или разместить их
 в неименованном пространстве имён.
 Т. е. скрыть от линкера.


Пробовал объявить свои перегруженные операторы как inline - все равно
в udf управление на них не передается.


 Похоже, линкер/загрузчик где-то путается с разрешением символов и вместо
 rtl-ных new/delete подставляет какие-то левые.


Тут немного непонятно.
Если в моей udf используются new/delete от firebird, то почему они
приводят к ошибке?
Может быть, дело в другом?
Например, такая ситуация.
Firebird работает, что-то размещает своим new.
Потом загружается моя библиотека, и firebird с этого момента
переключается на загруженные с ней new, delete из libstdc++
При этом использует чужой delete для чего-то, размещенного ранее своим
new.


С уважением, Владимир.


Re: new / delete в UDF

2011-11-29 Пенетрантность Vlad Khorsun

Vladimir ...


Похоже, линкер/загрузчик где-то путается с разрешением символов и вместо
rtl-ных new/delete подставляет какие-то левые.



Тут немного непонятно.
Если в моей udf используются new/delete от firebird, то почему они
приводят к ошибке?
Может быть, дело в другом?
Например, такая ситуация.
Firebird работает, что-то размещает своим new.
Потом загружается моя библиотека, и firebird с этого момента
переключается на загруженные с ней new, delete из libstdc++
При этом использует чужой delete для чего-то, размещенного ранее своим
new.


   Именно это и было моим первым предположением. Только оно касалось
экспортированных new\delete из UDF.

--
Хорсун Влад 





Re: new / delete в UDF

2011-11-29 Пенетрантность Vladimir
Проблема в том, что по умолчанию линкер gcc экспортирует все ф-ции.
 Соответственно, UDF цепляет delete движка (embedded коннект), или isql.
 Движок в 2.5 вроде как уже поправили на этот счёт, но утилиты по прежнему
 всё выставляют наружу.

Но тогда ведь и new бы цеплялась?
Или в чем-то условия для этих двух операторов отличаются?

Моя громоздкая UDF заработала.
Еще раз большое спасибо за решение.

С уважением, Владимир.



Re: new / delete в UDF

2011-11-28 Пенетрантность Khorsun Vlad

Vladimir ...

Спасибо за совет.
Очень было похоже, что это может помочь, но никакие опции редактора не
изменили ситуацию.


   Какого-такого редактора ?


Пробовал --no-export-dynamic  --exclude-libs, никакого эффекта.


   Какая версия Firebird ?

   Есть возможность пройтись отладчиком по коду UDF и посмотреть - что
за delete он вызывает?

--
Хорсун Влад 





Re: new / delete в UDF

2011-11-28 Пенетрантность Khorsun Vlad

Vladimir ...

   А каким образом проверяется работоспособность UDF ?
Запросы выполняются в isql с локальным коннектом ?
Сетевой коннект не пробовал ?

--
Хорсун Влад 





Re: new / delete в UDF

2011-11-28 Пенетрантность Vladimir
Да, все в isql с локальным коннектом.
Имеет смысл попробовать сетевой коннект?

С уважением, Владимир.

Re: new / delete в UDF

2011-11-28 Пенетрантность Vlad Khorsun

Vladimir ...

Да, все в isql с локальным коннектом.
Имеет смысл попробовать сетевой коннект?


   Да

--
Хорсун Влад 





Re: new / delete в UDF

2011-11-28 Пенетрантность Tonal
28.11.2011 18:27, Vladimir пишет:
 Вариант 3. Пытаюсь перегрузить операторы new и delete.
Попробуй в этом варианте сделать операторы инлайновыми или разместить их
в неименованном пространстве имён.
Т. е. скрыть от линкера.

Похоже, линкер/загрузчик где-то путается с разрешением символов и вместо
rtl-ных new/delete подставляет какие-то левые.

Попробуй запустить под strace и/или gdb.
-- 
Александр Замараев



Re: new / delete в UDF

2011-11-21 Пенетрантность Vladimir


On Nov 18, 11:08 am, Khorsun Vlad hv...@optima.com.ua wrote:
 Vladimir ...

  !

  Linux UDF, gcc,
  :

   long* aTestItem = new long;
   delete aTestItem;

  Segmentation fault delete.

     ,
 .so ӣ .

 --


Re: new / delete в UDF

2011-11-21 Пенетрантность Vladimir
Спасибо за совет.
Очень было похоже, что это может помочь, но никакие опции редактора не
изменили ситуацию.
Пробовал --no-export-dynamic  --exclude-libs, никакого эффекта.

С уважением, Владимир.

new / delete в UDF

2011-11-17 Пенетрантность Vladimir
Здравствуйте!

При попытке в Linux использовать UDF, собранную в gcc, столкнулся со
следующим:

  long* aTestItem = new long;
  delete aTestItem;

вызывает ошибку Segmentation fault на операторе delete.

В Windows все проходит без ошибок.

Если библиотеку использовать не в UDF, а вызывать из простого
тестового приложения, все проходит без ошибок и в Linux.

Есть ли возможность использовать в UDF в Linux операторы new / delete?

Речь идет не о возвращаемом результате, все происходит внутри UDF.

Если заменить new / delete на malloc / free, ошибки не возникает.
Но в UDF требуется работать с классами.
Как вариант, рассматриваю возможность размещать экземпляры классов по
malloc с последующим явным вызовом конструкторов.
Но используемая система классов достаточно громоздкая.
Кроме того, хотелось бы минимизировать отличия между Windows и Linux
версиями.

Поэтому вопрос для меня очень насущный.

Есть ли возможность использовать в UDF в Linux операторы new / delete?

С уважением, Владимир.


Re: new / delete в UDF

2011-11-17 Пенетрантность Khorsun Vlad

Vladimir ...

Здравствуйте!

При попытке в Linux использовать UDF, собранную в gcc, столкнулся со
следующим:

 long* aTestItem = new long;
 delete aTestItem;

вызывает ошибку Segmentation fault на операторе delete.


   Насколько я помню, нужно явно сказать линкеру не экспортировать
из .so всё подряд.

--
Хорсун Влад




Re: Не выйти из isql позле вызова UDF в Linux

2011-11-11 Пенетрантность Arioch
В письме от Thu, 20 Oct 2011 19:30:32 +0400, Vsevolod  
iuaa...@gmail.com сообщал:


  Если кому интересно - новости нашего городка. В варианте, описаном  
выше,

добился нормальной работы тестовой библиотеки, когда поменял клиентскую
библиотеку fbclient.dll на версию от FB 2.1.
 Куда крестьянину податься теперь ...


Возможно, описать это на http://tracker.firebirdsql.org/browse/CORE-3651
По крайней мере отслеживать :-)

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: buffer overflow detected при вызове udf в isql

2011-10-28 Пенетрантность Khorsun Vlad

Vladimir wrote in message ...

Здравствуйте!

При попытке вызова udf в isql получаю сообщение
*** buffer overflow detected ***: /usr/lib/firebird/2.1/bin/isql
terminated
Далее выводится Backtrace и Memory map


   Коннект локальный ?

--
Хорсун Влад 





Re: buffer overflow detected при вызове udf в isql

2011-10-28 Пенетрантность Vladimir

 Переполнение буффера, с 99.99% вероятностью проблема в UDF.


Действительно, отыскал ошибку.
Большое спасибо.

Re: buffer overflow detected при вызове udf в isql

2011-10-28 Пенетрантность Vladimir
Коннект локальный.
Была ошибка в UDF.

Re: buffer overflow detected при вызове udf в isql

2011-10-27 Пенетрантность Sergey Mereutsa
Привет!

 При попытке вызова udf в isql получаю сообщение
 *** buffer overflow detected ***: /usr/lib/firebird/2.1/bin/isql
 terminated
 Далее выводится Backtrace и Memory map

 В чем может быть дело?
 В udf, в системе, в настройках?
 Что может помочь?

 Ubuntu 10.04.3
 Firebird CS 2.1.3.18185

Переполнение буффера, с 99.99% вероятностью проблема в UDF.



-- 
Best regards,
 Sergeymailto:gebele...@gmail.com




buffer overflow detected при вызове udf в isql

2011-10-26 Пенетрантность Vladimir
Здравствуйте!

При попытке вызова udf в isql получаю сообщение
*** buffer overflow detected ***: /usr/lib/firebird/2.1/bin/isql
terminated
Далее выводится Backtrace и Memory map

В чем может быть дело?
В udf, в системе, в настройках?
Что может помочь?

Ubuntu 10.04.3
Firebird CS 2.1.3.18185

С уважением, Владимир.



Re: Не выйти из isql позле вызова UDF в Linux

2011-10-20 Пенетрантность Vsevolod
Привет всем !

У меня в качестве подопытного кролика Ubuntu 11.04. - 32/64. Последнее
чего добился то, что в 64 битной версии простейшая библиотека, которая
состоит из одной функции без входных параметров и возвращающая всегда одно
и то же целое число, отрабатывает как нужно как и в 32-разрядном
окружении, но теперь не вешает клиентский и серверный процесс при
дисконнекте от БД, а сносит серверный процесс, а клиентский процесс
получает ексепшен, что сервер разорвал соединение. 

  Если кому интересно - новости нашего городка. В варианте, описаном выше,
добился нормальной работы тестовой библиотеки, когда поменял клиентскую
библиотеку fbclient.dll на версию от FB 2.1.   

  Куда крестьянину податься теперь ...  

Всеволод

--
View this message in context: 
http://firebird.1100200.n4.nabble.com/isql-UDF-Linux-tp3908947p3922275.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Не выйти из isql позле вызова UDF в Linux

2011-10-19 Пенетрантность Vladimir
Ничего с этой ошибкой на моей сборке мне изменить не удалось.
Попробовал начать с нуля в другой редакции Linux.

Ubuntu 10.04
Firebird CS 2.1.3.18185
Средства разработки не устанавливал, взял тот же исполняемый файл с
UDF.

Простой пример, над которым бился, отработал.

Не считайте, пожалуйста, результат критикой Fedora. Возможно, у меня
что-то не так было настроено.
Возможно, дело в версии Firebird. В репозитории Ubuntu последняя
версия была 2.1, в Fedora устанавливал 2.5.

С уважением, Владимир.

Re: Не выйти из isql позле вызова UDF в Linux

2011-10-19 Пенетрантность Vsevolod
Ничего с этой ошибкой на моей сборке мне изменить не удалось.
Попробовал начать с нуля в другой редакции Linux.

Ubuntu 10.04
Firebird CS 2.1.3.18185
Средства разработки не устанавливал, взял тот же исполняемый файл с
UDF.

Простой пример, над которым бился, отработал.

Не считайте, пожалуйста, результат критикой Fedora. Возможно, у меня
что-то не так было настроено.
Возможно, дело в версии Firebird. В репозитории Ubuntu последняя
версия была 2.1, в Fedora устанавливал 2.5.

  Везет тебе :) У меня в качестве подопытного кролика Ubuntu 11.04. - 32/64.
Последнее чего добился то, что в 64 битной версии простейшая библиотека,
которая состоит из одной функции без входных параметров и возвращающая
всегда одно и то же целое число, отрабатывает как нужно как и в 32-разрядном
окружении, но теперь не вешает клиентский и серверный процесс при
дисконнекте от БД, а сносит серверный процесс, а клиентский процесс получает
ексепшен, что сервер разорвал соединение.

С уважением, 
Всеволод

--
View this message in context: 
http://firebird.1100200.n4.nabble.com/isql-UDF-Linux-tp3908947p3918637.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Не выйти из isql позле вызова UDF в Linux

2011-10-19 Пенетрантность Vsevolod
Ubuntu 10.04
Firebird CS 2.1.3.18185
Средства разработки не устанавливал, взял тот же исполняемый файл с
UDF.

  Невнимательно прочитал. ИМХО все дело в птичке, я же писал, что вплоть до
версии CS 2.1.3 под Линуксом все работало и работает.

С уважением, Всеволод.

--
View this message in context: 
http://firebird.1100200.n4.nabble.com/isql-UDF-Linux-tp3908947p3918674.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re[2]: Не выйти из isql позле вызова UDF в Linux

2011-10-19 Пенетрантность Sergey Mereutsa
Привет!

   Невнимательно прочитал. ИМХО все дело в птичке, я же писал, что вплоть до
 версии CS 2.1.3 под Линуксом все работало и работает.

Скорее всего, всё дело в компиляторе. У меня некоторые UDF спокойно
себе перекочевали с 1.5 потом на 2.0, потом на 2.1, потом на 2.5 и
32-бит на 64 вообще без переписывания. В функциях используются строки
(достаточно злобно) и немного шифрования.

Единственная разница с вашим случаем - всё на C/C++.

-- 
Best regards,
 Sergeymailto:gebele...@gmail.com




Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-18 Пенетрантность A.Truhin
 в попробовать 32-bit Classic ?
 
 вряд ли, но вдруг проявится - тогда проще исктаь будет :-)
 
На винде, я использовал FPC + UDF 32/64 бита, нет ни каких проблем



Re: Не выйти из isql позле вызова UDF в Linux

2011-10-17 Пенетрантность Cherevatenko Vsevolod
Привет !

 В isql создаю базу, регистрирую и выполняю UDF, все нормально. Но при
 попытке выйти командой quit терминал зависает. Непосредственно после
 вызова UDF можно дальше работать с базой данных. Все отрабатывает,
 зависание только при попытке выхода.

  Ты не один такой :) Я уже неделю бьюсь, положительных результатов
пока нет :( На очереди проверка работы библиотеки под 64 осью и 64
Firebird, а также компиляция кода под GNU Pascal. Сейчас
катастрофически нет времени :( Будет что-то положительное - отпишусь.

С уважением, Всеволод.

Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Arioch

В письме от Mon, 17 Oct 2011 10:15:20 +0400, Cherevatenko Vsevolod
iuaa...@gmail.com сообщал:

Пара мыслей в воздух

1) у Всеволода вроде 32-битная система - ОС, FB, FPC, UDF
У Владимира тоже все 32-битное ?

Едва ли это важно, но заранее хз.


2) У обоих Firebird CS - Никто не пробовал SS ?
Он по идее не заканчивает процес только при выключении, а не при  
отсоединении, т.е. должен зависать один раз в конце работы  
демона/операционки, а ни при каждом отключении.
Или м.б. вообще не зависать, сли там отлично окажется организована работа  
с UDF'ками или памятью



3) если дошло дело до простейших примеров - м.б. сделаете простейшую  
UDF-ка на GCC, посмотрите зависает ил она ?

Будет ли отличие из-за Pascal RTL, или из-за чего-то общего в FPC/GCC ?

И все же интересно какие библиотеки подгружаются для сервера и для UDF-ки,  
если это покажет ldd
Смущает меня вот это кайликсовое uses libc в фреепаскале - не может он  
подцеплять какой-то полускомпилированный устаревший юнит от кайликса ?


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Arioch

В письме от Mon, 17 Oct 2011 10:15:20 +0400, Cherevatenko Vsevolod
iuaa...@gmail.com сообщал:

О! ещё одна мысль.

4) Поставить на винде таких же версий FB-CS и FPC и на винде попробовать  
UDF-ку


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Vsevolod

О! ещё одна мысль.

4) Поставить на винде таких же версий FB-CS и FPC и на винде попробовать  
UDF-ку

 У меня есть такие варианты FB 2.5.1-64 bit на Win2008-64 и FB 2.1.4-64 bit
на Win2008-64 скомпилированные на FPC. Все работает. Пока без проблем :)
Наверное я что-то неправильно делаю.

С уважением, 
Всеволод



--
View this message in context: 
http://firebird.1100200.n4.nabble.com/isql-UDF-Linux-tp3908947p3911743.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Vsevolod

И все же интересно какие библиотеки подгружаются для сервера и для UDF-ки,  
если это покажет ldd

  Подскажите плиз как это сделать.

Смущает меня вот это кайликсовое uses libc в фреепаскале - не может он  
подцеплять какой-то полускомпилированный устаревший юнит от кайликса ?

  Отключал я это. Не помогло. Единственно, что был warning

  usr/bin/ld: warning: /opt/firebird/UDF/link.res contains output section;
did you forget -T?

 Может быть какие-то заклинания fpc нужны ?

С уважением,
Всеволод.

--
View this message in context: 
http://firebird.1100200.n4.nabble.com/isql-UDF-Linux-tp3908947p3911826.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Владимир

1) у Всеволода вроде 32-битная система - ОС, FB, FPC, UDF
У Владимира тоже все 32-битное ?



Все 32-битное


2) У обоих Firebird CS - Никто не пробовал SS ?
Он по идее не заканчивает процес только при выключении, а не при 
отсоединении, т.е. должен зависать один раз в конце работы 
демона/операционки, а ни при каждом отключении.
Или м.б. вообще не зависать, сли там отлично окажется организована работа 
с UDF'ками или памятью




На SS простые примеры UDF, собранные в Lazarus, работают.






Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Arioch
В письме от Mon, 17 Oct 2011 16:19:49 +0400, Vsevolod  
iuaa...@gmail.com сообщал:


И все же интересно какие библиотеки подгружаются для сервера и для  
UDF-ки,

если это покажет ldd


  Подскажите плиз как это сделать.



ну я сам не гуру далеко, да и проверить особо не на чем.

1. открыть терминал

2. может быть - ввести команду su - чтобы дальше от администратора  
вводить. М.б. не нужно, но не помешает, думаю.


3. ввести ldd путь-к-файлу-сервера
3.1 вывод программы скопировать себе в текстовик какой-нибудь
3.2 или можно ldd путь временный файл - но с перенаправлением придется  
самому себе права на файл потом давать


4 - то же самое про файл UDF

5. потом сравнить и искать подозрительные частичные совпадения



  usr/bin/ld: warning: /opt/firebird/UDF/link.res contains output


а он этот рес-файл за каким лешим вообще на линуксе нужен ???

введи в терминале man ld (выход кнопкой q) и почитай, что Линукс пишет про  
опцию -T



--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Arioch
В письме от Mon, 17 Oct 2011 15:41:33 +0400, Vsevolod  
iuaa...@gmail.com сообщал:


 У меня есть такие варианты FB 2.5.1-64 bit на Win2008-64 и FB 2.1.4-64  
bit

на Win2008-64 скомпилированные на FPC. Все работает. Пока без проблем :)


в попробовать 32-bit Classic ?

вряд ли, но вдруг проявится - тогда проще исктаь будет :-)

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Vsevolod
ну я сам не гуру далеко, да и проверить особо не на чем.

1. открыть терминал

2. может быть - ввести команду su - чтобы дальше от администратора  
вводить. М.б. не нужно, но не помешает, думаю.

3. ввести ldd путь-к-файлу-сервера
3.1 вывод программы скопировать себе в текстовик какой-нибудь
3.2 или можно ldd путь временный файл - но с перенаправлением придется  
самому себе права на файл потом давать

4 - то же самое про файл UDF

5. потом сравнить и искать подозрительные частичные совпадения

  Все сделал, как доктор приказал. Только сравнивать нечего :

Для сервера :

linux-gate.so.1 =  (0xb77a1000)
libfbembed.so.2.5 = /opt/firebird/lib/libfbembed.so.2.5 (0xb728d000)
libdl.so.2 = /lib/tls/i686/cmov/libdl.so.2 (0xb7284000)
libncurses.so.5 = /lib/libncurses.so.5 (0xb724b000)
libstdc++.so.6 = /usr/lib/libstdc++.so.6 (0xb7155000)
libm.so.6 = /lib/tls/i686/cmov/libm.so.6 (0xb712f000)
libgcc_s.so.1 = /lib/libgcc_s.so.1 (0xb711)
libpthread.so.0 = /lib/tls/i686/cmov/libpthread.so.0 (0xb70f7000)
libc.so.6 = /lib/tls/i686/cmov/libc.so.6 (0xb6f9c000)
libicuuc.so.30 = /opt/firebird/lib/libicuuc.so.30 (0xb6edd000)
libicudata.so.30 = /opt/firebird/lib/libicudata.so.30 (0xb6d6)
libicui18n.so.30 = /opt/firebird/lib/libicui18n.so.30 (0xb6ce1000)
/lib/ld-linux.so.2 (0xb77a2000)

Для удф :

statically linked

Текст мощной удф :

library test ;

uses
linux;

Function test : Integer ; cdecl ; export ;
Begin
  Result := 400 ;
End ;

Exports test name 'test' ;

begin
end.


С уважением,
Всеволод.

--
View this message in context: 
http://firebird.1100200.n4.nabble.com/isql-UDF-Linux-tp3908947p3912045.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Vladimir
У меня тоже ничего подозрительного

[root@localhost bin-classic]# ldd /usr/sbin/fb_inet_server
linux-gate.so.1 =  (0x00e0b000)
libfbembed.so.2.5 = /usr/lib/libfbembed.so.2.5 (0x42747000)
libdl.so.2 = /lib/libdl.so.2 (0x48cfa000)
libncurses.so.5 = /lib/libncurses.so.5 (0x4a11e000)
libtinfo.so.5 = /lib/libtinfo.so.5 (0x49f2f000)
libstdc++.so.6 = /usr/lib/libstdc++.so.6 (0x49e3f000)
libm.so.6 = /lib/libm.so.6 (0x48d0c000)
libgcc_s.so.1 = /lib/libgcc_s.so.1 (0x48d38000)
libpthread.so.0 = /lib/libpthread.so.0 (0x48cde000)
libc.so.6 = /lib/libc.so.6 (0x48b5)
libicuuc.so.44 = /usr/lib/libicuuc.so.44 (0x4a989000)
libicudata.so.44 = /usr/lib/libicudata.so.44 (0x4ab3)
libicui18n.so.44 = /usr/lib/libicui18n.so.44 (0x4bb99000)
/lib/ld-linux.so.2 (0x48b2f000)
[root@localhost bin-classic]# ldd /usr/lib/firebird/UDF/index.so
linux-gate.so.1 =  (0x007d1000)
libpthread.so.0 = /lib/libpthread.so.0 (0x00877000)
libdl.so.2 = /lib/libdl.so.2 (0x00a9b000)
libc.so.6 = /lib/libc.so.6 (0x00153000)
/lib/ld-linux.so.2 (0x48b2f000)

С уважением, Владимир.


Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Arioch

В письме от Mon, 17 Oct 2011 17:32:58 +0400, Vsevolod
iuaa...@gmail.com сообщал:


Для сервера :

linux-gate.so.1 =  (0xb77a1000)
libfbembed.so.2.5 = /opt/firebird/lib/libfbembed.so.2.5 (0xb728d000)
libdl.so.2 = /lib/tls/i686/cmov/libdl.so.2 (0xb7284000)
libncurses.so.5 = /lib/libncurses.so.5 (0xb724b000)
libstdc++.so.6 = /usr/lib/libstdc++.so.6 (0xb7155000)
libm.so.6 = /lib/tls/i686/cmov/libm.so.6 (0xb712f000)
libgcc_s.so.1 = /lib/libgcc_s.so.1 (0xb711)
libpthread.so.0 = /lib/tls/i686/cmov/libpthread.so.0 (0xb70f7000)
libc.so.6 = /lib/tls/i686/cmov/libc.so.6 (0xb6f9c000)
libicuuc.so.30 = /opt/firebird/lib/libicuuc.so.30 (0xb6edd000)
libicudata.so.30 = /opt/firebird/lib/libicudata.so.30 (0xb6d6)
libicui18n.so.30 = /opt/firebird/lib/libicui18n.so.30 (0xb6ce1000)
/lib/ld-linux.so.2 (0xb77a2000)


странно, что не вижу ссылки на  ib_util.dll
или она подгружается динамичечски только при загрузке UDF ???

http://www.ibase.ru/ibfaq.htm#msvcr7



Для удф :

statically linked



и вот это менч напрягает.
представь, что ты делаешь программу с плагинами, и сама программа у тебя
собрана с BPL (USe Runtime Packages), а плагин - статичен. В результате у
тебя внутри программы будет два разных типа TObject и соответственно всех
последующих классов тоже по два.
Сразу отваливаются операторы as и is и вообще хрен знает что происходит.

В принципе, конечно, взаимодействие FB - UDF должно быть примитивным и
не влиять... но хрен его знает, как поведут себя две инициализации двух
копий libc

мне интуитивно не нравится

впрочем, у Владимира все собрано динамически, библиотеки кажется
совпадают, а результат тот же...


Текст мощной удф :

library test ;

uses
linux;

Function test : Integer ; cdecl ; export ;
Begin
  Result := 400 ;
End ;

Exports test name 'test' ;

begin
end.


вот если бы FPC могу выдать плоский текст, со всеми модулями
подклеенными...
Где-то выгрузка программы не срабатывает...

может какого мьютекса ждёт или ещё чего...

Такая примитивная UDF-ка не выдаёт такое же usr/bin/ld: warning:  
/opt/firebird/UDF/link.res contains output section; did you forget -T? ?
А если эту примитивную UDF-ку в GNU Pascal ? И сделать аналог на GCC для  
очистки совести ?


PS. GCC... при всей моей не любви к C/C++...
RIP mr. Ritchie

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Зависает Firebird CS при отключении после вызова UDF в Linux

2011-10-17 Пенетрантность Arioch
В письме от Mon, 17 Oct 2011 16:38:06 +0400, Владимир  
vbut...@gmail.com сообщал:



2) У обоих Firebird CS - Никто не пробовал SS ?
Он по идее не заканчивает процес только при выключении, а не при  
отсоединении, т.е. должен зависать один раз в конце работы  
демона/операционки, а ни при каждом отключении.
Или м.б. вообще не зависать, сли там отлично окажется организована  
работа с UDF'ками или памятью




На SS простые примеры UDF, собранные в Lazarus, работают.



на соединении и отсоединении будут работать, без сомнения.

А на выключении ?
Сделай как обычно, а потом попробуй погасить сервер, не зависнет,  
нормально выключится ?


Если можно, желательно запускать сервер как программу, а не как службу.
Точно не знаю как он в Линуксе запускается, но чкорее всего через  
/etc/rc.d (т.е. отключённым от нормальных stdin/stdout), а то и через  
xinet? который сам включает и выключает и может просто проглотить  
акую-то ошибку. В терминале запустить сервер как программу, и посмотреть  
потом выключиться ли он...


Ммм... интересно, а есть ли штатный способ выключения FB на Линуксе ? там  
же иконки в трей он не выводит, как на винде, наверное...


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Не выйти из isql позле вызова UDF в Linux

2011-10-16 Пенетрантность Vladimir
Здравствуйте!

Пробую переписать работающие в Windows UDF под Linux.
Столкнулся с непонятной ситуацией.
В isql создаю базу, регистрирую и выполняю UDF, все нормально. Но при
попытке выйти командой quit терминал зависает. Непосредственно после
вызова UDF можно дальше работать с базой данных. Все отрабатывает,
зависание только при попытке выхода.
UDF собираю в Lazarus.
Максимально сократил код, результат тот же.
firebird.log пустой.
Если вместо своей UDF выполняю UDF стандартной библиотеки ib_udf,
ошибка не проявляется.

Посоветуйте, пожалуйста, что стоит попытаться сделать.

Fedora 15
Firebird CS 2.5.1.26349
Lazarus 0.9.30-1
Free Pascal 2.4.2-2

С уважением, Владимир.

Re: Не выйти из isql позле вызова UDF в Linux

2011-10-16 Пенетрантность Arioch
В письме от Sun, 16 Oct 2011 01:17:49 +0400, Vladimir  
vladimir@gmail.com сообщал:



Пробую переписать работающие в Windows UDF под Linux.
попытке выйти командой quit терминал зависает. Непосредственно после
вызова UDF можно дальше работать с базой данных. Все отрабатывает,
зависание только при попытке выхода.


кажется неделю назад уже писал кто-то, будете вместе с ним искать корень  
зла ;-)


http://comments.gmane.org/gmane.comp.db.firebird.russian/39874

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Странная ошибка рестора БД с UDF под Linux

2011-10-14 Пенетрантность Vsevolod
 {$IfDef Kylix}
 libc;

опять на давно умершем Кайликсе ?

  :) Это директива осталась. Сейчас библиотека откомпилирована под FP 2.4.4.
Повторюсь, откомпилированная библиотека на давно умершем Кайликсе, работает
и не жужжит на всех версиях птички вплоть до 2.1.3 включительно. Начиная с
2.1.4 и дальше 2.5.1 - при вызове функций библиотеки происходит краш
серверного процесса, при gbak на сервере перед коммитом - segmentation
fault.

Кстати, а GNU Pascal не пробовал ?

  Вот чего не пробовал, того не пробовал. Нужно будет потестить и этот
вариант.

С уважением,
Всеволод.

--
View this message in context: 
http://firebird.1100200.n4.nabble.com/UDF-Linux-tp3893121p3903932.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Странная ошибка рестора БД с UDF под Linux

2011-10-14 Пенетрантность Arioch
В письме от Fri, 14 Oct 2011 10:19:19 +0400, Vsevolod  
iuaa...@gmail.com сообщал:



{$IfDef Kylix}
libc;

опять на давно умершем Кайликсе ?

 :) Это директива осталась.


и она как минимум подключает libc, который возможно не нужен, а возможно  
ещё и переключает что-то в самом FPC или других модулях. В общем, я бы  
убрал :-)


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Странная ошибка рестора БД с UDF под Linux

2011-10-13 Пенетрантность Vsevolod

Если падает, можно прислать бекап метаданных и удф мне.

  Спасибо. Попробую воспроизвести тестовый пример и выслать. Хотя надеюсь
 апдейт ядра и glibc поможет.

  После вчераших изысков получил следующие результаты :

  1. segmentation fault скорее всего появлялась из-за того, что библиотека
компилировалась еще на дремучем Kilix2 в котором была дремучая обертка
libc.pas
  2. После компиляции под FreePascal 2.4.4 - при вызове функций библитеки
меня обматюкали мол у тебя функция объявлена с FREE_IT, а ты не используешь
ib_util_malloc.
  3. Переписал все вызовы malloc на ib_util_malloc. Теперь функции
вызываются, возвращают правильные результаты, но теперь клиент виснет при
дисконнекте от БД. Завис IBE, также завис процесс gbak после того как
написал, что закончил рестор. Серверные процессы тоже не терминейтятся.
  4. Сделал тестовую библиотеку из 2-х функций, возвращающих результат by
value  by reference (клиент при вызове любой), тестовую БД и сейчас вышлю
тебе на E-Mail.

  Если можно подскажи приз где я не прав и что не так делаю.


С уважением,
Всеволод


--
View this message in context: 
http://firebird.1100200.n4.nabble.com/UDF-Linux-tp3893121p3900707.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Странная ошибка рестора БД с UDF под Linux

2011-10-13 Пенетрантность Храпко Виктор

Vsevolod iuaa...@gmail.com
сообщил/сообщила в новостях следующее:
news:1318487736538-3900707.p...@n4.nabble.com...


   Если можно подскажи приз где я не прав и что не так делаю.



Не знаю к кому ты стучишся. Если конкретно к Владу то извини.
Вот мои потуги в написании библиотек на ФрееПаскале.
Я в лазарусе компилил. Еще и для 64 разрядного OpenSuse 11.2

library KHRStr;

{$LONGSTRINGS ON}
{$IFDEF UNIX}
  {$MODE DELPHI}
{$ENDIF}

uses
{$IFDEF UNIX}
  cthreads, // must be included before anything else for multithreaded apps,
hell knows why
{$ENDIF}
  SysUtils,
  Classes;

function KHRPos(ASubStr, AStr : PChar) : Longint; cdecl;
var
  P : PChar;
begin
  P := StrPos(AStr, ASubStr);
  if P = nil
then Result := 0
else Result := P - AStr + 1;
end;

exports
  KHRPos name 'KHRPOS' {$IFNDEF
UNIX}resident{$ENDIF},

begin
  isMultiThread:=True;
end.

Основная проблема была когда не было вот этого
{$IFDEF UNIX}
  cthreads, // must be included before anything else for multithreaded apps,
hell knows why
{$ENDIF}

С уважением Виктор Храпко




Re: Странная ошибка рестора БД с UDF под Linux

2011-10-13 Пенетрантность Igor Zakhrebetkov

Храпко Виктор пишет:

Я в лазарусе компилил. Еще и для 64 разрядного OpenSuse 11.2

А версия лазаруса какая?

Как-то пытался перекомпилировать UDF для FB под 64битный RedHat,
но старая версия лазаруса не позволяла.

---
Игорь



Re: Странная ошибка рестора БД с UDF под Linux

2011-10-13 Пенетрантность Arioch
В письме от Thu, 13 Oct 2011 10:35:36 +0400, Vsevolod  
iuaa...@gmail.com сообщал:



  3. Переписал все вызовы malloc на ib_util_malloc. Теперь функции
вызываются, возвращают правильные результаты, но теперь клиент виснет при
дисконнекте от БД. Завис IBE, также завис процесс gbak после того как
написал, что закончил рестор. Серверные процессы тоже не терминейтятся.



1) а у тебя не используется что-то с авто-созданием строк ? какой-нибудь  
StrNew, который автоматически вызовет собственный heap manager, а не  
ib-шный ?
в Delphi заменить стандартный менеджер на ib_malloc понятно как, есть ли  
аналогичный хуки в FPC не знаю.



2) а если убрать из объявления FREE_IT ? будет виснуть или нет ?
понятно, что если не переписывать - будет понемногу течь памятью. Но для  
тестирования можно попробовать ? сначала все функции, если перестанет  
зависать - половину функций и т.д.




--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Странная ошибка рестора БД с UDF под Linux

2011-10-13 Пенетрантность Cherevatenko Vsevolod
 1) а у тебя не используется что-то с авто-созданием строк ? какой-нибудь  
 StrNew, который автоматически вызовет собственный heap manager, а не  
 ib-шный ?
 в Delphi заменить стандартный менеджер на ib_malloc понятно как, есть ли  
 аналогичный хуки в FPC не знаю.

  Там гораздо все интересней. Сделал вот такую мощную библиотеку из
одной функции, у которой нет вх.параметров и она возвращает всегда
одно и тоже целое число, т.е. FREE_IT не нужен при объявлении, и все
равно виснет и клиент и серверный процесс, собака  :(

library test ;

{$Define Kylix}

uses
SysUtils,
Classes,
{$IfDef Kylix}
libc;
{$Else}
windows;
{$EndIf}

Function test : Integer ; cdecl ; export ;
Begin
  Result := 100 ;
End ;

Exports test name 'test' ;

begin
end.


 2) а если убрать из объявления FREE_IT ? будет виснуть или нет ?
 понятно, что если не переписывать - будет понемногу течь памятью. Но для  
 тестирования можно попробовать ? сначала все функции, если перестанет  
 зависать - половину функций и т.д.

  Нет смысла. см. выше.

  Мне вот интересно, а есть в принципе sucsess story для UDF,
написанных на паскале, которые работают на Firebird 32битный CS 2.1.4,
2.5.1 под Linux 32? На 64 битах я не пробовал, может повезет хоть там.

С уважением,
Всеволод.

Re: Странная ошибка рестора БД с UDF под Linux

2011-10-13 Пенетрантность Arioch
В письме от Thu, 13 Oct 2011 23:50:56 +0400, Cherevatenko Vsevolod  
iuaa...@gmail.com сообщал:



и все
равно виснет и клиент и серверный процесс, собака  :(



виснет при выгрузке, так ?

может быть если просмоьтреть в ldd удфку и сервер - увидим, что они гурзят  
разные версиии одной и той же библиотеки ?


When compiled with gcc hello.c, an executable file named a.out is created.  
Using the Linux command ldd a.out, which prints shared library  
dependencies, the required shared libraries are:

   libc.so.6 = /lib/libc.so.6 (0x4001d000)
   /lib/ld-linux.so.2 = /lib/ld-linux.so.2 (0x4000)

The same dynamic linking loader is used to map a dll into the  
application's memory after it is running. The application controls which  
dynamic libraries are loaded and which functions in the libraries are  
called by using Linux dynamic loader routines to perform the loading and  
linking and to return the addresses of the required entry points.




может быть можно загнать сервер в отладчик и протрассировать все  
подхходящие вызовы dlclose ?

strace скорее всего слишком много выдаст...
ну и в паскалевском RTL можно попробовать найти системный код выгрузки  
SO-шки, ели он в принципе есть на Линуксе. в DDLках он есть...


Linux dll functions

 Linux provides four library functions (dlopen, dlerror, dlsym, dlclose),  
one include file (dlfcn.h), and two shared libraries (static library  
libdl.a and dynamic library libdl.so) to support the dynamic linking  
loader. The library function are:
dlopen opens and maps into memory the shared objects file and returns a  
handle

dlsym return a pointer to the requested entry point
dlerror returns either NULL or a pointer to an ASCII string describing the  
most recent error

dlclose closes the handle and unmaps the shared objects

http://www.ibm.com/developerworks/linux/library/l-dll/index.html


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Странная ошибка рестора БД с UDF под Linux

2011-10-12 Пенетрантность Vsevolod

Для начала попробуй рестор только метаданных. 

  Я вчера во-первых нашел check constrain, который пользовался udf, убил
его. После этого segmentation fault стал появляться перед finishing,
closing, and going home

  Только после того как заремарил ВСЕ вызовы удф база отресторилась без
ошибок. Как то подозрительно, что вдруг все функции стали кривые. Что-то в
консерватории не то ... У нас, конечно :) Напомню под Win32/64 и все версии
птички до 2.1.3 на Linux - эти же функции работают и не жужжат. Сама удф
написана на паскале.

Проверил еще раз требования 2.5.1 к ядру и к glibc - они выше минимума, но
ниже рекомендуемых. Сегодня попробуем проапдейтить и еще раз проверить.
Кстати для 2.1.4 никаких рекомендаций и уточнений по поводу ядра и glibc
нет.

Если падает, можно прислать бекап метаданных и удф мне.

  Спасибо. Попробую воспроизвести тестовый пример и выслать. Хотя надеюсь
апдейт ядра и glibc поможет.

   В firebird.log смотрел ?

  Конечно. В данном случае тишина и спокойствие как на морском дне. В случае
если ресторить через localhost:database то :

REMOTE INTERFACE/gds__detach: Unsuccesful detach from database. 
Uncommitted work may have been lost


С уважением,
Всеволод

--
View this message in context: 
http://firebird.1100200.n4.nabble.com/UDF-Linux-tp3893121p3897034.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Странная ошибка рестора БД с UDF под Linux

2011-10-12 Пенетрантность Yurij
Только после того как заремарил ВСЕ вызовы удф база отресторилась без
ошибок. Как то подозрительно, что вдруг все функции стали кривые.
Сама удф написана на паскале. 

Посмотри на всякий случай initialization секции и тому подобные 
автоматически вызываемые при загрузке udf места. 
Что-то похоже типа сервер грузит udf, срабатывает инициализация рунтайма и 
все валится с исключением.

Еще можно, по идее, запустить сервер под отладчиком и посмотреть что именно 
падает и когда.


Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Vsevolod
Добрый день, всем.

  Некоторое время назад пытались переползти на версию птички 2.1.4 с 2.1.3.
Получили ошибку при ресторе БД и на время отказались. Но со вчерашнего дня
опять вернулись к этому вопросу из-за постоянной ошибки
http://tracker.firebirdsql.org/browse/CORE-2936, которая якобы исправлена в
новой версии. Про эту ошибку в нашем случае нужно писать отдельный пост, она
сейчас просто в регулярном режиме проявляется, сейчас не об этом. 
Ошибка рестора в 2-х словах :
БД под FB 2.1.4 не ресторится на Linuxe (на винде все нормально) если,
используемые в ней UDF-ки, лежат там где им и положено находиться. Когда
UDF-к нет на месте - рестор проходит нормально. 

В 2.1.3 все нормально отрабатывает.

Вот командная строка:
firebird@db_server:/opt/firebird/bin$ /opt/firebird/bin/gbak -v -r -REP
-user SYSDBA -pas masterkey -P 8192 /backup/restore_trn.fbk
/backup/restore_trn_w_udf.fdb -Y /database/elba/_restore_w_udf.log

Ошибка :
Segmentation fault

При этом текстовый лог обрывается вот так :

gbak:activating and creating deferred index FK_KRB_ST_EV_2CERT
gbak:activating and creati

Когда нормальный лог, то там еще 10-к индексов строится
и заканчивается как и положено

gbak:committing metadata
gbak:finishing, closing, and going home



UBUNTU Server 10.04.2 LTS 2.6.32-28-generic-pae
FirebirdCS-2.1.4.18393-0.i686

P.S. Такие же симптомы и при попытке переползти на 2.5.1


--
View this message in context: 
http://firebird.1100200.n4.nabble.com/UDF-Linux-tp3893121p3893121.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Vlad Khorsun

Vsevolod ...

Добрый день, всем.

 Некоторое время назад пытались переползти на версию птички 2.1.4 с 2.1.3.
Получили ошибку при ресторе БД и на время отказались. Но со вчерашнего дня
опять вернулись к этому вопросу из-за постоянной ошибки
http://tracker.firebirdsql.org/browse/CORE-2936, которая якобы исправлена в
новой версии.


   Что значит - якобы ?


Про эту ошибку в нашем случае нужно писать отдельный пост, она
сейчас просто в регулярном режиме проявляется, сейчас не об этом.


   Ну так пиши отдельный пост. Или два. Скока надо - пиши :)


Ошибка рестора в 2-х словах :
БД под FB 2.1.4 не ресторится на Linuxe (на винде все нормально) если,
используемые в ней UDF-ки, лежат там где им и положено находиться. Когда
UDF-к нет на месте - рестор проходит нормально.

В 2.1.3 все нормально отрабатывает.

Вот командная строка:
firebird@db_server:/opt/firebird/bin$ /opt/firebird/bin/gbak -v -r -REP
-user SYSDBA -pas masterkey -P 8192 /backup/restore_trn.fbk
/backup/restore_trn_w_udf.fdb -Y /database/elba/_restore_w_udf.log

Ошибка :
Segmentation fault


   Ну так что тут не понятно ? Кривая UDF, скорее всего. И используется
в expression index'е. В 2.1.3 везло, баг не обнаруживался (хотя частое
появление страниц с не тем типом может на это указывать), в 2.1.4 повезло
ещё больше и баг сразу вылез. Найти и уничтожить :)

--
Хорсун Влад 





Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Vsevolod
Что значит - якобы ?

  Потому что проверить сам не могу пока :)

Ну так пиши отдельный пост. Или два. Скока надо - пиши :)

  Ок :)

Ну так что тут не понятно ? Кривая UDF, скорее всего. И используется
в expression index'е. В 2.1.3 везло, баг не обнаруживался (хотя частое
появление страниц с не тем типом может на это указывать), в 2.1.4 повезло
ещё больше и баг сразу вылез. Найти и уничтожить :)

  Какой хитрый баг :) Ползает еще с FB 1.0, если не раньше. Только одно но,
нет у нас ни одного expression index.
--


--
View this message in context: 
http://firebird.1100200.n4.nabble.com/UDF-Linux-tp3893121p3893416.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Vlad Khorsun

Vsevolod ...


   Ну так что тут не понятно ? Кривая UDF, скорее всего. И используется
в expression index'е. В 2.1.3 везло, баг не обнаруживался (хотя частое
появление страниц с не тем типом может на это указывать), в 2.1.4 повезло
ещё больше и баг сразу вылез. Найти и уничтожить :)


 Какой хитрый баг :) Ползает еще с FB 1.0, если не раньше. Только одно но,
нет у нас ни одного expression index.


   Значит не в индексе дело. Хотя тогда ещё более странно все, если часть 
индексов
успевает создаться.

   В любом случае - раз с удф проблема есть, а без неё - нет, то дело конечно в 
фазе луны.

--
Хорсун Влад 





Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Vsevolod
Значит не в индексе дело. Хотя тогда ещё более странно все, если часть
индексов
успевает создаться.

В любом случае - раз с удф проблема есть, а без неё - нет, то дело
 конечно в фазе луны.

  Ясно. А можешь как-то подсказать более короткий путь как этого жука найти.
Или отключать по порядку каждую функцию, бекапить и ресторить пока не найду
? Может дебаг лог какой можно сделать и по нему понять где собака порылась.

С уважением,
Всеволод.

--
View this message in context: 
http://firebird.1100200.n4.nabble.com/UDF-Linux-tp3893121p3894040.html
Sent from the firebird-russian mailing list archive at Nabble.com.

Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Oleg Matveyev

Или отключать по порядку каждую функцию,


не по-порядку, а делением пополам конечно.
отключаем половину функций, ресторим 





RE: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Vadim Mescheryakov
29.09.2009 20:19 я отправил пост с темой Segmentation fault во время работы 
gbak -r

*
Обновил у заказчика firebird 1.0  на firebird 2.1

(нужно было использовать временные таблицы и склеивать запросы в
процедурах)
На сервере стоит ASP Linux 9.0 Ядро 2.4.20-9asp (libs-2.3.2)

Получил такие проблемы:

1. Периодически стал умирать gbak -r на восстановлении базы (база 3.7 Gb) с 
сообщением Segmentation fault (копию он всегда делает исправно) 2. При вызове 
процедур, в которых используются временные таблицы и udf часто (может быть и 
такое , что до 13-00 не работает, после 13-00 работает :)

возникает ошибка:

ISC ERROR MESSAGE:
Unable to complete network request to host 192.168.0.1.
Error writing data to the connection.
Программа на вашем хост-компьютере разорвала установленное подключение)
Потеряна связь с БД (SQL Server Error: ISC ERROR CODE:335544721

ISC ERROR MESSAGE:
Unable to complete network request to host 192.168.0.1.
Error writing data to the connection.
Программа на вашем хост-компьютере разорвала установленное подключение)

При этом, после такого сообщения  программа не теряет связь с базой данных а 
продолжает нормально работать.


Весь комплект процедур и udf работает у другого заказчика на Open Suse 11 и ни 
каких подобных ошибок не возникает, Так же нет подобных ошибок в моем офисе, 
там стоит та же самая OS (ASP Linux 9.0 Ядро 2.4.20-9asp (libs-2.3.2))

Похоже на то что обе проблемы связаны. 

Как полечить?
*
Проблема эта решилась только заменой сервера (Старый поработал до этого 6 лет, 
решили что пора менять - поменяли стало все нормально работать).  Что для меня 
было не понятно - сервер был настоящий - с ECC памятью, и по моему с Intel RAiD 
U42. Так как за 6 лет работы сервер морально устарел эксперименты с ним больше 
проводить не стали.

В индексах функции UDF не использовались. Но нашли через 1,5 года косяк - одна 
UDF - RTRIM была зарегистрирована с ошибкой и поджирала память в процессе 
обслуживающем клиента (использовался CS) при обращении к ней.




С уважением, Мещеряков Вадим

директор ООО Комплексные Системы 
454021 г. Челябинск ул. 40 лет Победы 31, 77
Тел: +7 (351) 2807917
Моб: +7 922 6395170
Web: www.del-fin.ru
ICQ: 343-554-572
SKYPE: vadimmescheryakov




Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Vlad Khorsun

Vsevolod ...

   Значит не в индексе дело. Хотя тогда ещё более странно все, если часть

индексов

успевает создаться.



   В любом случае - раз с удф проблема есть, а без неё - нет, то дело
конечно в фазе луны.


 Ясно. А можешь как-то подсказать более короткий путь как этого жука найти.


   Для начала попробуй рестор только метаданных. Если падает, можно прислать
бекап метаданных и удф мне.


Или отключать по порядку каждую функцию, бекапить и ресторить пока не найду
? Может дебаг лог какой можно сделать и по нему понять где собака порылась.


   В firebird.log смотрел ?

--
Хорсун Влад 





Re[2]: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Sergey Mereutsa
Привет!

 Проблема эта решилась только заменой сервера (Старый поработал до
 этого 6 лет, решили что пора менять - поменяли стало все нормально
 работать).  Что для меня было не понятно - сервер был настоящий - с
 ECC памятью, и по моему с Intel RAiD U42. Так как за 6 лет работы
 сервер морально устарел эксперименты с ним больше проводить не стали.

Эта слепая вера в ECC меня иногда убивает. У меня 2 раза был случай,
когда проблема была именно в глючной планке памяти, белого (белее
некуда в банке) сервера. Что самое интересное, стандартный линуховый
мемтест позволяет отключить чип контроля целостности и анализировать
работу памяти без корректировок. Тогда столько нового узнаёшь про
производителей этой памяти...




-- 
Best regards,
 Sergeymailto:gebele...@gmail.com




Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Arioch
В письме от Tue, 11 Oct 2011 14:06:43 +0400, Vsevolod  
iuaa...@gmail.com сообщал:



нет у нас ни одного expression index.


а полей computed by UDF/expression-with-UDF ? которые могут встретиться в  
индексе


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Arioch
В письме от Tue, 11 Oct 2011 11:51:56 +0400, Vsevolod  
iuaa...@gmail.com сообщал:



При этом текстовый лог обрывается вот так :
gbak:activating and creating deferred index FK_KRB_ST_EV_2CERT
gbak:activating and creati


интересно, а там лог буферизованный ?

Почему на пол-слова оборвалось, закэшированный кусок не записался, или  
UDF'ка прицельно в памяти напортила прямо посреди константы строки ?


--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Странная ошибка рестора БД с UDF под Linux

2011-10-11 Пенетрантность Vlad Khorsun

Arioch wrote ...

В письме от Tue, 11 Oct 2011 11:51:56 +0400, Vsevolod  сообщал:


При этом текстовый лог обрывается вот так :
gbak:activating and creating deferred index FK_KRB_ST_EV_2CERT
gbak:activating and creati


интересно, а там лог буферизованный ?


   Обычный stdout

Почему на пол-слова оборвалось, закэшированный кусок не записался, или  UDF'ка прицельно в памяти напортила прямо посреди 
константы строки ?


   УДФ живёт в процессе сервера, а не гбака :) Разве что гбак тоже выполняется
в сервере - через сервисы.

--
Хорсун Влад 





Re: Работа с Blob из UDF Firebird 2.5

2010-10-18 Пенетрантность AZDesign


Khorsun Vlad wrote:
 
 AZDesign ...
 
 В исходниках Firebird 2.5 есть пример fbudf.cpp
 ...
 Помогите с примером.
 
 Или я тупой, или... :)
 
 В чём проблемы-то ? Как пробовал ?
 
 

Я в C++ разбираюсь плохо, подскажите, что делаю не так:
FBUDF_API void blob2string(const blobcallback* inpblob, paramdsc* rc)
{
if ((inpblob-blob_handle == 0) || (inpblob-blob_total_length==0))
{
internal::setnull(rc);
return;
}
if (!inpblob || !inpblob-blob_handle)
return;

ISC_SHORT EndOfBlob = 0;
ISC_USHORT* res_len = 0;
const ISC_USHORT buf_siz = inpblob-blob_max_segment;

ISC_UCHAR* pbuff = 0;
pbuff = new ISC_UCHAR[buf_siz+1];
internal::set_any_string_type(rc, buf_siz, pbuff);

EndOfBlob = inpblob-blob_get_segment(inpblob-blob_handle, pbuff, 
buf_siz,
res_len); // эта строка вызывает крах

delete [] pbuff;

return;
}

-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p2999702.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Работа с Blob из UDF Firebird 2.5

2010-10-18 Пенетрантность Vlad Khorsun

AZDesign ...



Я в C++ разбираюсь плохо, подскажите, что делаю не так:


   Где объявление blobcallback ? Где SQL декларация ?

--
Хорсун Влад 





Re: Работа с Blob из UDF Firebird 2.5

2010-10-18 Пенетрантность AZDesign


Khorsun Vlad wrote:
 
 
 Где объявление blobcallback ? Где SQL декларация ?
 
 
Прошу прощения:
typedef struct blobcallback {
short (*blob_get_segment)
(void* hnd, ISC_UCHAR* buffer, ISC_USHORT buf_size, ISC_USHORT*
result_len);
void*   blob_handle;
ISC_LONGblob_number_segments;
ISC_LONGblob_max_segment;
ISC_LONGblob_total_length;
void (*blob_put_segment)
(void* hnd, const ISC_UCHAR* buffer, ISC_USHORT buf_size);
ISC_LONG (*blob_lseek)
(void* hnd, ISC_USHORT mode, ISC_LONG offset);
}  *BLOBCALLBACK;
#endif /* !defined(JRD_VAL_H) */
Это из файла ibase.h

--FBUDF_API void blob2string(const blobcallback* inpblob, paramdsc* rc)
declare external function blob2string
blob,
varchar(32760) by descriptor
returns parameter 2
entry_point 'blob2string' module_name 'az_blob';

-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p2999722.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Работа с Blob из UDF Firebird 2.5

2010-10-18 Пенетрантность Vlad Khorsun

AZDesign ...


Я в C++ разбираюсь плохо, подскажите, что делаю не так:
FBUDF_API void blob2string(const blobcallback* inpblob, paramdsc* rc)

...

ISC_USHORT* res_len = 0;


   Нужно

ISC_USHORT res_len = 0;

...

EndOfBlob = inpblob-blob_get_segment(inpblob-blob_handle, pbuff, buf_siz,
res_len); // эта строка вызывает крах



   res_len);

--
Хорсун Влад 





Re: Работа с Blob из UDF Firebird 2.5

2010-10-18 Пенетрантность AZDesign


Khorsun Vlad wrote:
 
 Нужно
 
 ISC_USHORT res_len = 0;
 
 res_len);
 
 

Спасибо, заработало.
-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p2999788.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Работа с Blob из UDF Firebird 2.5

2010-10-18 Пенетрантность Arioch
В письме от Mon, 18 Oct 2010 05:35:49 +0400, AZDesign  
a...@az-design.ru сообщал:



так как Delphi пока не дает
64-разрядный код


а Free Pascal или GNU Pascal ?
Тебе же в UDF не нужны GUI

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Работа с Blob из UDF Firebird 2.5

2010-10-18 Пенетрантность AZDesign


Arioch wrote:
 
 В письме от Mon, 18 Oct 2010 05:35:49 +0400, AZDesign  
 
 а Free Pascal или GNU Pascal ?
 Тебе же в UDF не нужны GUI
 
 

Delphi - рабочий инструмент
MSVS - то, что выбрали разработчики Firebird
Все остальное будет 3-им, 4-им инструментом.
Инструмент это не только язык, но управление проектом, и всякие мелочи,
которые узнаешь на собственных шишках.
Поэтому лучше работать на том, что развивается вместе с Firebird.
А язык потихоньку освоим - не первый.
-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p3001419.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Работа с Blob из UDF Firebird 2.5

2010-10-17 Пенетрантность Dmitri Kuzmenko

Hello, AZDesign!

AZDesign wrote:

Все мои попытки упираются в вызов 
  EndOfBlob = inpblob-blob_get_segment(inpblob-blob_handle, text, len,

res_len)
который приводит к краху сервера.


похоже на кривое объявление blob_get_segment.
Посмотри в www.ibase.ru/download/blobsaveload.zip
там хоть для паскаля, но аналогию поймешь.

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34




Re: Работа с Blob из UDF Firebird 2.5

2010-10-17 Пенетрантность Arioch
В письме от Mon, 18 Oct 2010 00:35:25 +0400, Dmitri Kuzmenko  
k...@ibase.ru сообщал:


Все мои попытки упираются в вызов   EndOfBlob =  
inpblob-blob_get_segment(inpblob-blob_handle, text, len,

res_len)
который приводит к краху сервера.


а кто выделяет и освобождает память под все эти char*  ?

Может у сервера и библиотеки не совпадают heap manager'ы ?

--
Написано в почтовом клиенте браузера Opera: http://www.opera.com/mail/



Re: Работа с Blob из UDF Firebird 2.5

2010-10-17 Пенетрантность AZDesign

С нее и начинал.
Но я тоже паскальщик, а требуется в MSVS, так как Delphi пока не дает
64-разрядный код

библиотека blobsaveload опирается на определение Blob данное в fun.cpp
А библиотека fbudf опирается на собственное определение 
typedef struct blobcallback {
short (*blob_get_segment)
(void* hnd, ISC_UCHAR* buffer, ISC_USHORT buf_size, ISC_USHORT*
result_len);
void*   blob_handle;
ISC_LONGblob_number_segments;
ISC_LONGblob_max_segment;
ISC_LONGblob_total_length;
void (*blob_put_segment)
(void* hnd, const ISC_UCHAR* buffer, ISC_USHORT buf_size);
ISC_LONG (*blob_lseek)
(void* hnd, ISC_USHORT mode, ISC_LONG offset);
}  *BLOBCALLBACK;
#endif /* !defined(JRD_VAL_H) */
в ibase.h
В чем принципиальное различие понять не могу.
в любом случае спасибо, будем колдовать дальше
-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p2999582.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Работа с Blob из UDF Firebir d 2.5

2010-10-17 Пенетрантность Евгений Килин

Привет!


Все мои попытки упираются в вызов
 EndOfBlob = inpblob-blob_get_segment(inpblob-blob_handle, text, len,
res_len)
который приводит к краху сервера.


Недавно воевали с похожей фигней. Проблема решилась установкой Struct Member 
Alignment в дефолтное значение. 





Re: Работа с Blob из UDF Firebir d 2.5

2010-10-17 Пенетрантность Евгений Килин

Нужна обратная функция преобразования Blod в строку типа:
FBUDF_API void blob2string(const blobcallback* outblob, paramdsc* v)


Кстати, а чем не устраивает стандартный FBшный Cast для простого 
преобразования BLOBа в строку? 





Re: Работа с Blob из UDF Firebird 2.5

2010-10-17 Пенетрантность AZDesign

Прошу прощения, (я в C++ новичок) - где и как?
У меня MS VS2005
-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p2999670.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Работа с Blob из UDF Firebird 2.5

2010-10-17 Пенетрантность AZDesign

Задача не строку получить, а понять как из Blob взять содержимое и
поковыряться в нем.
Прямая функция string2blob делает очень просто - берет указатель на строку и
пихает его Blob'у, сама никаких буферов (массивов) не создает.

-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p2999672.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Работа с Blob из UDF Firebird 2.5

2010-10-17 Пенетрантность AZDesign


Евгений Килин wrote:
 
 Все мои попытки упираются в вызов
  EndOfBlob = inpblob-blob_get_segment(inpblob-blob_handle, text, len,
 res_len)
 который приводит к краху сервера.
 
 Недавно воевали с похожей фигней. Проблема решилась установкой Struct
 Member 
 Alignment в дефолтное значение. 
 

Нашел, проверил, стоит default
-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p2999679.html
Sent from the firebird-russian mailing list archive at Nabble.com.


Re: Работа с Blob из UDF Firebir d 2.5

2010-10-17 Пенетрантность Евгений Килин

Прошу прощения, (я в C++ новичок) - где и как?
У меня MS VS2005


В MSDN загляни по поводу параметра компилятора /Zp.
Ну или к примеру в параметрах проекта Configuration Properties\C/C++\Code 
Generation. 





Re: Работа с Blob из UDF Firebir d 2.5

2010-10-17 Пенетрантность Евгений Килин

Недавно воевали с похожей фигней. Проблема решилась установкой Struct
Member
Alignment в дефолтное значение.

Нашел, проверил, стоит default


На всякий случай убедись, что никаких #pragma pack нет.
А так значит другой случай. 





Re: Работа с Blob из UDF Firebird 2.5

2010-10-17 Пенетрантность Vlad Khorsun

AZDesign ...


В исходниках Firebird 2.5 есть пример fbudf.cpp

...

Помогите с примером.


   Или я тупой, или... :)

   В чём проблемы-то ? Как пробовал ?

--
Хорсун Влад 





Работа с Blob из UDF Firebird 2.5

2010-10-16 Пенетрантность AZDesign

В исходниках Firebird 2.5 есть пример fbudf.cpp
В нем функция преобразования строки в Blob:
FBUDF_API void string2blob(const paramdsc* v, blobcallback* outblob)

Нужна обратная функция преобразования Blod в строку типа:
FBUDF_API void blob2string(const blobcallback* outblob, paramdsc* v)

Помогите с примером.
Все мои попытки упираются в вызов 
  EndOfBlob = inpblob-blob_get_segment(inpblob-blob_handle, text, len,
res_len)
который приводит к краху сервера.

С уважением, Андрей Архангельский.

-- 
View this message in context: 
http://firebird.1100200.n4.nabble.com/Blob-UDF-Firebird-2-5-tp2998810p2998810.html
Sent from the firebird-russian mailing list archive at Nabble.com.


blob crc udf

2010-02-22 Пенетрантность RUST

Господа, с праздником!
Кто-то может кинуть исходники сишной UDF вычисления
CRC32 блоба? Устал гуглить.
Заранее спасибо.



Re: Нашёл, удалось: UDF + UTF8

2010-01-28 Пенетрантность Dmitri Kuzmenko

Hello, Janex!

простой пример работы с utf8 в udf:

http://www.ibase.ru/unicode_faq.html#udf

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34




Re: Нашёл, удалось: UDF + UTF8

2010-01-28 Пенетрантность Dmitri Kuzmenko

Hello, All!

Dmitri Kuzmenko wrote:

простой пример работы с utf8 в udf:

http://www.ibase.ru/unicode_faq.html#udf


кто уже успел посмотреть кривой вариант с Move,
сделайте reload. Теперь все кошерно.

--
Dmitri Kouzmenko, www.ibase.ru, (495) 953-13-34




Нашёл, удалось: UDF + UTF8

2010-01-27 Пенетрантность Janex

После 2 днеи страшно е#$% нашёл, удалось :)

Нагуглил всётаки функцию WideStringToUTF8.
Немношко напильником пришлось, а то под Дельфу 2009 ето, и
в место Length(S) прописал Length(S) * 2 и всё заработало.

Если кому интересно и надо то вот:

function WideStringToUTF8(const S: string): string;
begin
  SetLength(Result, WideCharToMultiByte(CP_UTF8, 0, @S[1], Length(S) * 2 div 
SizeOf(WCHAR), nil, 0, nil, nil));
  WideCharToMultiByte(CP_UTF8, 0, @S[1], Length(S) * 2 div SizeOf(WCHAR),  
@Result[1], Length(Result) * 2, nil, nil);
end;


Function dbMessage(AIndex: Integer; ALanguage: PChar): PChar; Cdecl; Export;
Var ReturnString :PChar;
lsResult :WideString;
Begin
  ReturnString  := ib_util_malloc(1024);
  lsResult  := 'Jānis Briška, Янис Бришка, English text';
  StrCopy(ReturnString, Pchar( WideStringToUTF8(lsResult)));
  Result := ReturnString;
End;


Regards
Janex



Re: Нашёл, удалось: UDF + UTF8

2010-01-27 Пенетрантность Alexey Popov



Janex wrote:

После 2 днеи страшно е#$% нашёл, удалось :)

Нагуглил всётаки функцию WideStringToUTF8.


А чем стандартная WideCharToMultiByte не угодила?




Re: Нашёл, удалось: UDF + UTF8

2010-01-27 Пенетрантность Janex

On 27.01.2010 12:22, Alexey Popov wrote:



Janex wrote:

После 2 днеи страшно е#$% нашёл, удалось :)

Нагуглил всётаки функцию WideStringToUTF8.


А чем стандартная WideCharToMultiByte не угодила?




А чёрт его знает - 100 всяких вариантов испробовал, чтото неполучалось, наверно
чтото неправильно делал - етото вариант пошёл и дальше его трогать както 
нехочется :)

Regards
Janex




Re: UDF и UTF8

2010-01-26 Пенетрантность Dmitry Lendel

Привет



Мож у когото всётаки есть какоито пример на дельфе как
Widestring на етото CString переконвертить ?
В UDF-ке мне будет WideString-и в которих тексты не только
на русском но и на других языках, и страшно хочется ето всё
выпихнуть в наружу как UTF8 ...


Почти Делфи
http://community.freepascal.org:1/search/search?q=UTF8Encodet=Search

http://community.freepascal.org:1/docs-html/rtl/system/ansitoutf8.html

Есть там и исходники

Дмитрий 





UDF и UTF8

2010-01-25 Пенетрантность Janex

Привет алл.
Перехожу на FB 2.5 и на UTF8 ...
И шас немогу понять - там шас мне надо както по иному всё програмировать
чтоб UDF возврошало стринги в UTF8 кодировке.
UDF-и делаю на Delphi 2009.
Мож гдето про ето написано ?

Regards
Janex.



Re: UDF и UTF8

2010-01-25 Пенетрантность Sergey Mereutsa
Привет!

 Перехожу на FB 2.5 и на UTF8 ...
 И шас немогу понять - там шас мне надо както по иному всё програмировать
 чтоб UDF возврошало стринги в UTF8 кодировке.
 UDF-и делаю на Delphi 2009.
 Мож гдето про ето написано ?

Ну не знаю, что в Дельфи имеется ввиду под UTF-8, но с точки зрения
сишного кода, ээто обычные массивы байт, только размер БУКВЫ там имеет
переменное количество байт - от 4-й до 4-х (на самом деле, до 6-ти, но
где-то в недрах птица (???) я видел комментарий, что больше 4-х не
поддерживается).
Могу примеры выложить, но честно предупреждаю - оно на С/С++ и
использовать на свой страх и риск.

-- 
Best regards,
 Sergeymailto:gebele...@gmail.com




Re: UDF и UTF8

2010-01-25 Пенетрантность Janex

Ну не знаю, что в Дельфи имеется ввиду под UTF-8, но с точки зрения
сишного кода, ээто обычные массивы байт, только размер БУКВЫ там имеет
переменное количество байт - от 4-й до 4-х (на самом деле, до 6-ти, но
где-то в недрах птица (???) я видел комментарий, что больше 4-х не
поддерживается).
Могу примеры выложить, но честно предупреждаю - оно на С/С++ и
использовать на свой страх и риск.


Ето я так понемаю, что со стороны базы DDL неменается, тоесть
как обявляли, например, return CSTRING(256) так и для UTF8 остаётся ?

Regards
Janex






RE: UDF и UTF8

2010-01-25 Пенетрантность Dmitry Beloshistov
Привет!

 Ето я так понемаю, что со стороны базы DDL неменается, тоесть
 как обявляли, например, return CSTRING(256) так и для UTF8 остаётся ?


Только с учетом того, что в CSTRING влезет 256 символов ANSI и хз сколько 
символов UTF8 (256/4 в худшем случае)...


WBR, Dmitry Beloshistov AKA [-=BDS=-]





__ Information from ESET NOD32 Antivirus, version of virus signature 
database 4802 (20100124) __

The message was checked by ESET NOD32 Antivirus.

http://www.esetnod32.ru



Re: UDF � UTF8

2010-01-25 Пенетрантность Alex Cherednichenko
Hello, Dmitry!
You wrote  on Mon, 25 Jan 2010 11:31:34 +0200:

 ?? Ето я так понемаю, что со стороны базы DDL неменается, тоесть
 ?? как обявляли, например, return CSTRING(256) так и для UTF8 остаётся ?

 DB Только с учетом того, что в CSTRING влезет 256 символов ANSI и хз сколько 
символов UTF8 (256/4 в худшем случае)...

А нулевые байты разве не встречаются в UTF-8 символах?
Терминатор Ц-строк же будет .
Или я ошибаюсь?

--
With best regards, Alex Cherednichenko. 




RE: UDF и UTF8

2010-01-25 Пенетрантность Dmitry Beloshistov
Привет!

  ?? Ето я так понемаю, что со стороны базы DDL неменается, тоесть
  ?? как обявляли, например, return CSTRING(256) так и для UTF8
 остаётся ?

  DB Только с учетом того, что в CSTRING влезет 256 символов ANSI и хз
 сколько символов UTF8 (256/4 в худшем случае)...

 А нулевые байты разве не встречаются в UTF-8 символах?
 Терминатор Ц-строк же будет .
 Или я ошибаюсь?


Ну при явном указании кодировки сервер вроде сам должен разобраться с 
терминаторами или как?


WBR, Dmitry Beloshistov AKA [-=BDS=-]





__ Information from ESET NOD32 Antivirus, version of virus signature 
database 4802 (20100124) __

The message was checked by ESET NOD32 Antivirus.

http://www.esetnod32.ru



Re: UDF и UTF8

2010-01-25 Пенетрантность Dmitry Yemanov

Alex Cherednichenko wrote:


А нулевые байты разве не встречаются в UTF-8 символах?


Нет.


--
Дмитрий Еманов



Re: UDF � UTF8

2010-01-25 Пенетрантность Alex Cherednichenko
Hello, Dmitry!
You wrote  on Mon, 25 Jan 2010 13:04:25 +0300:

 ?? А нулевые байты разве не встречаются в UTF-8 символах?
 DY Нет.

Ок.
Панику прекратил :)

--
With best regards, Alex Cherednichenko. 




Re: UDF и UTF8

2010-01-25 Пенетрантность Janex

Нашёл примеры (freeadhocudf) - со стороны базы вроде всё тож самое, но
сам dll на C написан, и от туда xрен разберусь как на дельфе правилно сделать :(
Точно нету у кого небудь какоито сампл на дельфе 2009 где
UDF возврошает стринг в UTF8 кодировке ??? Плз :)

Regards
Janex



Re: UDF � UTF8

2010-01-25 Пенетрантность alex.abramov
Janex jane...@gmail.com ÓÏÏÂÝÉÌ/ÓÏÏÂÝÉÌÁ × 
ÎÏ×ÏÓÔÑÈ ÓÌÅÄÕÀÝÅÅ: news:hjjvk2$53...@ger.gmane.org...
 îÁÛ£Ì ÐÒÉÍÅÒÙ (freeadhocudf) - ÓÏ ÓÔÏÒÏÎÙ ÂÁÚÙ ×ÒÏÄÅ ×Ó£ ÔÏÖ ÓÁÍÏÅ, ÎÏ
 ÓÁÍ dll ÎÁ C ÎÁÐÉÓÁÎ, É ÏÔ ÔÕÄÁ xÒÅÎ ÒÁÚÂÅÒÕÓØ ËÁË ÎÁ ÄÅÌØÆÅ ÐÒÁ×ÉÌÎÏ 
 ÓÄÅÌÁÔØ :(
 ôÏÞÎÏ ÎÅÔÕ Õ ËÏÇÏ ÎÅÂÕÄØ ËÁËÏÉÔÏ ÓÁÍÐÌ ÎÁ ÄÅÌØÆÅ 2009 ÇÄÅ
 UDF ×ÏÚ×ÒÏÛÁÅÔ ÓÔÒÉÎÇ × UTF8 ËÏÄÉÒÏ×ËÅ ??? ðÌÚ :)

ðÒÉ×ÅÔ.
ÍÍÍ... åÓÌÉ ÔÙ ÎÅ ÐÉÛÅÛØ, ÞÔÏ-ÔÏ óÕÐÅÒðÕÐÅÒçÌÏÂÁÌØÎÏõÎÉ×ÅÒÓÁÌØÎÏÅ,
ÔÅÂÑ ÓÐÁÓÕÔ 2 ÆÕÎËÃÉÉ utf2cstring  cstrig2utf.
òÅÁÌÉÚÁÃÉÊ, × Ô.Þ. É ÎÁ Delphi ÍÁÓÓÁ...
ÍÏÖÎÏ ÐÏÇÕÇÌÉÔØ...
ÍÏÖÎÏ ÐÏÉÓËÁÔØ × ÉÓÈÏÄÎÉËÁÈ ÄÅÌØÆÅÊ É ËÏÍÐÏÎÅÎÔÏ×.






Re[2]: UDF и UTF8

2010-01-25 Пенетрантность Sergey Mereutsa
Привет!

 Нашёл примеры (freeadhocudf) - со стороны базы вроде всё тож самое, но
 сам dll на C написан, и от туда xрен разберусь как на дельфе правилно сделать 
 :(

Так как у меня все примеры на сях - не буду тебя сбивать с толку
сишным кодом - мне облегчило дело то, что удалось вырезать часть кода
прям из исходников Птица для работы (конвертации) со строками.

Но тебе это вряд ли поможет.

Главное - запомни, что:
1) Если база в UTF-8 - то все объявления, как обычно, но физически все
   строки в байтах в 4 раза длиннее. Нулевых байтов нет, они только в
   конце строки (если ты используешь CSTRING-объявления).
2) Со стороны клиента тоже нет никаких проблем, если помнить, что
   физически 1 буква - это 4 байта в памяти максимум, но лучше сразу
   конвертировать строки из UTF-8 во что-нибудь удобоваримое - типа
   wchar_t (или как оно там в дельфях) - так будет удобнее оперировать
   с буквами.
3) Птицевый SUBSTRING работает с БУКВАМИ (если все кодировки - базы и
   подключения - кошерные).
4) Блобы (как и строки) транслитерируются только если они текстовые.

ВНИМАНИЕ: есть засада - не все буквы в UTF-8 могут быть преобразованы
в кодировку подключения, отличную от UTF-8 - например, маленькая
греческая буква микро НЕ транслитерируется при подключении в
win-1251. Сервер матерится на это дело своим стандартным заклинанием
Can not transliterate between character sets.

Я давным-давно обсуждал эту бяку с Птицеводами, в результате (кажется
Дима Еманов - поправьте, если вру), решили, что это не бага, а фича,
ибо нельзя впихнуть невпихуемое.

 Точно нету у кого небудь какоито сампл на дельфе 2009 где
 UDF возврошает стринг в UTF8 кодировке ??? Плз :)

Звиняйте, по-моему Дельфи умер - мелкомягкие тоже постарались всех на
шарп перетащить.


-- 
Best regards,
 Sergeymailto:gebele...@gmail.com




Re: UDF и UTF8

2010-01-25 Пенетрантность Игорь Горбонос

Janex сообщил/сообщила в новостях следующее:

Точно нету у кого небудь какоито сампл на дельфе 2009 где
UDF возврошает стринг в UTF8 кодировке ??? Плз :)


Привет, может имеет смысл написать сюда: 
http://www.sql.ru/forum/actualtopics.aspx?bid=2
Туда переехали почти все местные :)

З.Ы. Сам пример сделать не могу, т.к. когда делал, то делал на C++, а его ты 
уже нашел, а на дельфи не умею.
З.Ы.Ы. Здесь http://freeadhocudf.org/index_eng.html написано, что есть поддержка UTF-8 для строковых функций, но я не 
понял, можно ли посмотреть исходные тексты и не работает раздел Download/


В общем удачи :) 





Re: UDF и UTF8

2010-01-25 Пенетрантность Janex

Звиняйте, по-моему Дельфи умер - мелкомягкие тоже постарались всех на
шарп перетащить.


Ну тута я нехотел бы соглсится, а то дельфа шас под Embarcadero тусуется
и ,как читал, то ета компания в данныи момемт самая большая в мире по
разработки сред програмирования.
По краинеи мере хочется верить что дельфа неугаснит, а то преходить
кудато на шарп например ... тогда лучше заканчивать програмировать
и поидти шофёром работать :)

Regards
Janex




  1   2   3   4   >