From: Leyne, S. <Se...@br...> - 2014-02-12 19:17:17
|
> Firebird.msg is not installed with client > ----------------------------------------- > > Key: CORE-4336 > URL: http://tracker.firebirdsql.org/browse/CORE-4336 > Project: Firebird Core > Issue Type: Bug > Components: Installation > Affects Versions: 2.5.2 Update 1 > Environment: Windows > Reporter: Dimitry Sibiryakov > Priority: Minor > > > When installer installs fbclient.dll into system directory using instclient, > firebird.msg is not automatically installed into directory above, so, without > additional registry entries (which are not allowed on a system with several > Firebird versions/instances), client library produces unreadable error > messages. I don't think this case is correct. The msg file is not supposed to go to the system directory. Sean |
From: Dimitry S. <sd...@ib...> - 2014-02-12 19:32:50
|
12.02.2014 20:17, Leyne, Sean wrote: > I don't think this case is correct. > > The msg file is not supposed to go to the system directory. The msg file is supposed to be one level up from client library. Public library is supposed to go to a directory where every application can easily find it. It is a system directory. So, the msg file is supposed to go one level up from the system directory. End of story. -- WBR, SD. |
From: Leyne, S. <Se...@br...> - 2014-02-12 20:26:37
|
> 12.02.2014 20:17, Leyne, Sean wrote: > > I don't think this case is correct. > > > > The msg file is not supposed to go to the system directory. > > The msg file is supposed to be one level up from client library. Public library > is supposed to go to a directory where every application can easily find it. It is > a system directory. So, the msg file is supposed to go one level up from the > system directory. End of story. The directory one level up from the system directory would be the "Windows" folder, and by standard no application files are supposed to be written to that folder. Isn't more likely that the issue is that the necessary Firebird registry setting is not being setup in the client install? (Isn't that how the 'Firebird path' is determined?) After all, the server install does not place the msg file in the Windows directory, and the local client see all of the error msgs without issue. Sean |
From: Dimitry S. <sd...@ib...> - 2014-02-12 20:42:03
|
12.02.2014 21:26, Leyne, Sean wrote: > The directory one level up from the system directory would be the "Windows" folder, and by standard no application files are supposed to be written to that folder. Unfortunately, this IS directory where fbclient.dll is looking for msg file and where it writes its log more than 10 years. > Isn't more likely that the issue is that the necessary Firebird registry setting is not being setup in the client install? (Isn't that how the 'Firebird path' is determined?) Can you read? Registry settings MUST NOT being set up if several Firebird instances/versions are installed at the same time. Otherwise all of them will use the same config file, etc. > After all, the server install does not place the msg file in the Windows directory, and the local client see all of the error msgs without issue. Oh, really? How had you tested that? Let me guess: using isql which (nice accident) is in the same directory as the client library. -- WBR, SD. |
From: Leyne, S. <Se...@br...> - 2014-02-12 21:01:21
|
> Can you read? Registry settings MUST NOT being set up if several Firebird > instances/versions are installed at the same time. Otherwise all of them will > use the same config file, etc. If you have multiple versions, you should not use instclient and should place FBClient.dll and the firebird msg file in your application root folder (just like an embedded install). <SL> |
From: Dimitry S. <sd...@ib...> - 2014-02-12 21:12:49
|
12.02.2014 22:01, Leyne, Sean wrote: > If you have multiple versions, you should not use instclient and should place FBClient.dll and the firebird msg file in your application root folder (just like an embedded install). My application is my application. Firebird client is a part of customer's environment. There is no way for client library to be in application's directory. -- WBR, SD. |
From: Vlad K. <hv...@us...> - 2014-02-12 22:03:18
|
> My application is my application. So, you have full control over it. Very well. > Firebird client is a part of customer's environment. Probably. But it is easy to isolate your application from customer's environment and make it use your private copy of fbclient.dll + firebird.msg. > There is no way for client library to be in application's directory. Why ? Regards, Vlad |
From: Dimitry S. <sd...@ib...> - 2014-02-12 22:14:56
|
12.02.2014 23:03, Vlad Khorsun wrote: > Probably. But it is easy to isolate your application from customer's environment > and make it use your private copy of fbclient.dll + firebird.msg. Yes. And as the result to get "private environment" incompatible with the rest of system that leads to application failure. The simplest example: if I provide application with private copy of FB 2.5 client, it will fail to work with FB 3.0 set by default. Let alone MSVC runtime issues and the fact that the customer may not using Firebird at all. -- WBR, SD. |
From: Leyne, S. <Se...@br...> - 2014-02-12 23:38:17
|
> > Probably. But it is easy to isolate your application from > > customer's environment and make it use your private copy of fbclient.dll + > firebird.msg. > > Yes. And as the result to get "private environment" incompatible with the > rest of system that leads to application failure. How so, you create your own install which create a \client folder underneath your application folder. You can install: - your application into the application folder - firebird.msg into the application folder - FBCLient.dll into the application\client folder Then your application can load the fbclient using the application as the starting point. Sean |
From: Dimitry S. <sd...@ib...> - 2014-02-13 10:25:48
|
13.02.2014 0:38, Leyne, Sean wrote: > How so, you create your own install which create a \client folder underneath your application folder. > > You can install: > > - your application into the application folder > - firebird.msg into the application folder > - FBCLient.dll into the application\client folder You forgot couple of things: - MSVC runtime required by fbclient.dll - configuration file compatible with target server of unknown version which can be on completely different host > Then your application can load the fbclient using the application as the starting point. Right. But I don't like support job. Now, when I see a "client library cannot be loaded" or "unavailable database" problem, I can say "it is Firebird install problem, go to Firebird support". If I had provided my own copy of Firebird client, I would have to investigate every case when "my" client cannot be loaded on customer's OS or is unable to work with customer's server. Too much dumb work in an alien language. -- WBR, SD. |
From: Leyne, S. <Se...@br...> - 2014-02-13 15:56:27
|
> 13.02.2014 0:38, Leyne, Sean wrote: > > How so, you create your own install which create a \client folder > underneath your application folder. > > > > You can install: > > > > - your application into the application folder > > - firebird.msg into the application folder > > - FBCLient.dll into the application\client folder > > You forgot couple of things: > > - MSVC runtime required by fbclient.dll There is a distributable for that, which can be incorporated into a install kit. > - configuration file compatible with target server of unknown version which > can be on completely different host I have never had to modify a config file in order to use a remote server. > > Then your application can load the fbclient using the application as the > starting point. > > Right. But I don't like support job. This sounds like "sour grapes" -- that is what a developer is supposed to do! Sean P.S. Technically, Firebird project does not provide a client-only install kit. |
From: Dimitry S. <sd...@ib...> - 2014-02-13 16:15:21
|
13.02.2014 16:56, Leyne, Sean wrote: > There is a distributable for that, which can be incorporated into a install kit. This is the way to nowhere. And at the end of this way is staying Exadata: rented black box with no access to inside. Unfortunately, the nature of my application does not allow such solution. > I have never had to modify a config file in order to use a remote server. Be prepared for changes after migration to 3.0. >> > Right. But I don't like support job. > This sounds like "sour grapes" -- that is what a developer is supposed to do! May be. But I prefer to hunt my own bugs only, not bugs in third-party libraries. That's why my installer installs only my software. -- WBR, SD. |
From: Vlad K. <hv...@us...> - 2014-02-13 08:20:06
|
> 12.02.2014 23:03, Vlad Khorsun wrote: >> Probably. But it is easy to isolate your application from customer's environment >> and make it use your private copy of fbclient.dll + firebird.msg. > > Yes. And as the result to get "private environment" incompatible with the rest of > system that leads to application failure. This is the task for your installer to make your application's environment to be compatible with already installed other software. Because nobody knows needs of your application except of you. > The simplest example: if I provide application with private copy of FB 2.5 client, it > will fail to work with FB 3.0 set by default. So, provide application with private copy of FB3 client (if you are claim to be compatible with fb3), what is the problem ? > Let alone MSVC runtime issues and the fact that the customer may not using Firebird at all. Again, this is task for you and your installer to check what Firebird version is already used and so on. Please, provide real sample of the task you can't solve using existing facilities and we will think how to improve it. But stop make false statements. Regards, Vlad |
From: Dimitry S. <sd...@ib...> - 2014-02-13 15:40:00
|
13.02.2014 9:19, Vlad Khorsun wrote: > Please, provide real sample of the task you can't solve using existing facilities and we will > think how to improve it. As I wrote in ticket: fbclient.dll installed into system directory produces unreadable error messages because of absence firebird.msg nearby. Firebird installer provides no way to make client library available for loading by LoadLibrary() without full path AND keep error messages produces by it readable WITHOUT breaking up any other existing Firebird installation. -- WBR, SD. |
From: Paul R. <pr...@ib...> - 2014-02-13 15:50:00
|
On Thursday 13 February 2014 16:39:41 Dimitry Sibiryakov wrote: > 13.02.2014 9:19, Vlad Khorsun wrote: > > Please, provide real sample of the task you can't solve using > > existing facilities and we will think how to improve it. > > As I wrote in ticket: fbclient.dll installed into system directory > produces unreadable error messages because of absence firebird.msg nearby. > Firebird installer provides no way to make client library available for > loading by LoadLibrary() without full path AND keep error messages produces > by it readable WITHOUT breaking up any other existing Firebird > installation. Have you tried setting FIREBIRD_MSG? Paul -- Paul Reeves http://www.ibphoenix.com Supporting users of Firebird |
From: Dmitry Y. <fir...@ya...> - 2014-02-13 15:51:56
|
13.02.2014 19:39, Dimitry Sibiryakov wrote: > As I wrote in ticket: fbclient.dll installed into system directory produces unreadable > error messages because of absence firebird.msg nearby. Do you mean really unreadable or actually readable but prefixed with "cannot locate firebird.msg"? Example maybe? Dmitry |
From: Dimitry S. <sd...@ib...> - 2014-02-13 16:05:05
|
13.02.2014 16:51, Dmitry Yemanov wrote: > Do you mean really unreadable or actually readable but prefixed with > "cannot locate firebird.msg"? Example maybe? Actually, half-readable. There may be meaningfil lines as well as prefixed with "can't format message". Example: unknown ISC error 335544973 can't format message 13:1 -- message file C:\Program Files (x86)\IBPhoenix\firebird.msg not found -- WBR, SD. |
From: Vlad K. <hv...@us...> - 2014-02-13 21:03:01
|
> 13.02.2014 16:51, Dmitry Yemanov wrote: >> Do you mean really unreadable or actually readable but prefixed with >> "cannot locate firebird.msg"? Example maybe? > > Actually, half-readable. There may be meaningfil lines as well as prefixed with "can't > format message". Example: > > unknown ISC error 335544973 > can't format message 13:1 -- message file C:\Program Files (x86)\IBPhoenix\firebird.msg > not found ISC error code 335544973 is isc_bad_epb_form ("Unrecognized events block"). Its facility code is 0 (JRD). Text messages for all errors of facility 0 are included into firebird.dll and used if firebird.msg is not found. This error code (isc_bad_epb_form) was intorduced in FB 2.5 and it means you are used older fbclient.dll with your application when obtained this error from Firebrid server. Also it means that firebird.msg corresponding to your old client library also have no text for this error and even if it would be found (as you wish here) it give you nothing in this case. Regards, Vlad PS "can't format message 13:1 ... "you got when you are try to get SQL code. This is generic "Firebird error" message which you can append to any "unknown" error ;) |
From: Dimitry S. <sd...@ib...> - 2014-02-13 21:14:07
|
13.02.2014 22:02, Vlad Khorsun wrote: > This error code (isc_bad_epb_form) was intorduced in FB 2.5 and it means you are > used older fbclient.dll with your application when obtained this error from Firebrid server. > Also it means that firebird.msg corresponding to your old client library also have no > text for this error and even if it would be found (as you wish here) it give you nothing in > this case. At first, this message was produced by 2.5 client. At second, the message become completely readable after copying firebird.msg _by hand_ because instclient didn't do that automatically. At last, thanks, I already know how to decode such cryptic messages. The ticket says exactly "WTF I have to decrypt it from sources". -- WBR, SD. |
From: Vlad K. <hv...@us...> - 2014-02-13 22:27:04
Attachments:
fberrors.dpr
|
> 13.02.2014 22:02, Vlad Khorsun wrote: >> This error code (isc_bad_epb_form) was intorduced in FB 2.5 and it means you are >> used older fbclient.dll with your application when obtained this error from Firebrid server. >> Also it means that firebird.msg corresponding to your old client library also have no >> text for this error and even if it would be found (as you wish here) it give you nothing in >> this case. > > At first, this message was produced by 2.5 client. You are wrong, as usual. I've attached a tiny project (written not using "alien language" - special for you) and you can try by yourself: - compile fberrors.dpr (i've used old good D6) - put into folder with fberrors.exe fbclient.dll from Firebird 2.1 and rename it into fbclient.21.dll - put into folder with fberrors.exe fbclient.dll from Firebird 2.5 and rename it into fbclient.25.dll - make sure you have no fbclient.dll in the PATH - go to console and run fberrors.exe 3 times as shown below: 1. D:\Borland\Delphi6\Projects\FBClient>fberrors.exe 335544973 Library "fbclient.dll" failed to load: The specified module could not be found 2. D:\Borland\Delphi6\Projects\FBClient>fberrors.exe 335544973 fbclient.21.dll Loaded library: D:\Borland\Delphi6\Projects\FBClient\fbclient.21.dll unknown ISC error 335544973 can't format message 13:1 -- message file D:\Borland\Delphi6\Projects\firebird.msg not found 3. D:\Borland\Delphi6\Projects\FBClient>fberrors.exe 335544973 fbclient.25.dll Loaded library: D:\Borland\Delphi6\Projects\FBClient\fbclient.25.dll Unrecognized events block can't format message 13:1 -- message file D:\Borland\Delphi6\Projects\firebird.msg not found And show us what you see > At second, the message become completely readable after copying firebird.msg _by hand_ > because instclient didn't do that automatically. You not only used old fbclient, you also put newer firebird.msg - congratulations ! > At last, thanks, I already know how to decode such cryptic messages. The ticket says > exactly "WTF I have to decrypt it from sources". Are you still so proud by yourself ? Regards, Vlad PS For those who have no Delphi or who not understand Pascal\ISC API - attached project does the following: - load library by second argument (or just "fbclient.dll" if second argument is omitted) - prints full name with path of just loaded library - create status-vector with single error code (by first argument) - interpret error code and print corresponding text message - extarct SQL code and print corresponding text message |
From: Dimitry S. <sd...@ib...> - 2014-02-14 10:45:11
|
13.02.2014 23:26, Vlad Khorsun wrote: > Are you still so proud by yourself ? Yep. You magnificently prove that a) People are lying b) Those who believe them are fools c) I'm a fool None of that is relevant to topic. -- WBR, SD. |
From: Vlad K. <hv...@us...> - 2014-02-13 21:11:22
|
> 13.02.2014 9:19, Vlad Khorsun wrote: >> Please, provide real sample of the task you can't solve using existing facilities and we will >> think how to improve it. > > As I wrote in ticket: fbclient.dll installed into system directory produces unreadable > error messages because of absence firebird.msg nearby. 1. Microsoft explicitly prohibited to put anything into system folders (since Vista, iirc). So forget about this (Firebird files in system folders), period. 2. Do you have *real* sample of what you *can not* do using existing well known ways ? So far i see only what you *do not want* to do. I can suggest you to hire programmer in this case :) > Firebird installer provides no way to make client library available for loading by > LoadLibrary() without full path AND keep error messages produces by it readable WITHOUT > breaking up any other existing Firebird installation. Write your own installer or improve Firebird installer in a way you need. Lucky you - it is written not using "alien language" Regards, Vlad |
From: Dimitry S. <sd...@ib...> - 2014-02-13 21:36:23
|
13.02.2014 22:11, Vlad Khorsun wrote: > 1. Microsoft explicitly prohibited to put anything into system folders (since Vista, iirc). Proof, please. "Not recommended" and "explicitly prohibited" - two big differences, you know. System folder is the only place where a _shared_ (do you remember what word "shared" means?..) library with corresponding bitness can be found by windows automatically, without ugly hacks. Once again: keeping _shared_ library in application folder is not an option. > 2. Do you have*real* sample of what you*can not* do using existing well known ways ? If you mean "using well known workarounds", then - no, I can workaround every bug. But it will be ugly and fail in well predictable cases. -- WBR, SD. |
From: Dmitry K. <kd...@ib...> - 2014-02-12 21:35:46
|
Здравствуйте! Wednesday, February 12, 2014, 11:32:28 PM, you wrote: DS> 12.02.2014 20:17, Leyne, Sean wrote: >> I don't think this case is correct. >> >> The msg file is not supposed to go to the system directory. DS> The msg file is supposed to be one level up from client library. Public library is DS> supposed to go to a directory where every application can easily find it. It is a system DS> directory. So, the msg file is supposed to go one level up from the system directory. End DS> of story. I think it was historical mistake. msg must be in the same directory where the client library is. Since we have that dumb behavior, when msg is "supposed to be one level up from the client library", it causes lot of problems for the client library itself, at any case - when it is being placed to some folder, or when it is being placed to the system folder. I think dumb things must be fixed. There is nothing to be proud of the current client library behavior. Just add search of msg to the CURRENT directory. -- С уважением, Dmitry Kuzmenko, www.ibase.ru, (495) 953-13-34 |
From: Dimitry S. <sd...@ib...> - 2014-02-12 21:48:45
|
12.02.2014 22:35, Dmitry Kuzmenko wrote: > I think dumb things must be fixed. You are right, of course. And AFAIR, it IS fixed in 3.0. But the ticket is still valid: installer (instclient util) put the client library to system dir, but no msg file anywhere nearby. PS: No, keeping client library in installation dir only and add it to the system PATH is not an option. Because of 64/32 bits issues. -- WBR, SD. |