Regression in FreeRADIUS 3.0.3: unixODBC fails
Hi! I'm trying to upgrade to 3.0.3 from FreeRADIUS 2.2.4 that works just fine here running its DHCP module with my custom Perl code that uses DBI and DBD::ODBC and unixODBC driver manager and freetds library to connect to MS SQL server. Version 2.2.4 works as expected. With 3.0.3 (we performed configuration upgrade) the same custom Perl code starts just fine but then DBI/DBD::ODBC/unixODBC fails to load freetds library with error message: [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libtdsodbc.so' : Invalid shared object handle 0x80851f7c0 (SQL-01000) Meantime, shell command "dltest /usr/local/lib/libtdsodbc.so" shows: SUCCESS: Loaded /usr/local/lib/libtdsodbc.so The command "dltest" comes from unixODBC-2.3.2 package. Kernel-level syscalls trace of radiusd process shows that, in fact, no attempt to access /usr/local/lib/libtdsodbc.so is made. If I move back to version 2.2.4 not changing perl, DBI, DBD::ODBC, unixODBC or custom perl code, the problem disappears. What direction should I take while debugging the problem? Eugene Grosbein
Eugene Grosbein wrote:
Version 2.2.4 works as expected. With 3.0.3 (we performed configuration upgrade) the same custom Perl code starts just fine but then DBI/DBD::ODBC/unixODBC fails to load freetds library with error message:
[unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libtdsodbc.so' : Invalid shared object handle 0x80851f7c0 (SQL-01000)
It should generally work. However... connecting to SQL from the Perl module is usually a bad idea. The SQL module already does that. Why not use it?
Kernel-level syscalls trace of radiusd process shows that, in fact, no attempt to access /usr/local/lib/libtdsodbc.so is made.
If I move back to version 2.2.4 not changing perl, DBI, DBD::ODBC, unixODBC or custom perl code, the problem disappears.
What direction should I take while debugging the problem?
Try the v3.0.x branch for one. It has a number of fixes over 3.0.3. But you're really asking us to debug *Perl* internals. FreeRADIUS isn't failing to load the library. FreeRADIUS loads Perl, and *Perl* fails to load the library. I have no idea how to debug that. Alan DeKok.
participants (2)
-
Alan DeKok -
Eugene Grosbein