First, let me assure you all I know nothing about the actual code that makes all this stuff work, or compiling, or really, much of anything "hard" about computing. So, this could be pure malarkey. Anyway...
There appears to be a linking problem when using libtdsodbc from DBD::ODBC which causes a segfault on a connect attempt. This is, I think, missed during routine testing because of PERL_DL_NONLAZY being set from Test::More. However, using DBIx-Class, for example, the connect call is somehow deferred until the last possible minute, so this hack / workaround, of setting PERL_DL_NONLAZY in a BEGIN block no longer works. Well, I can say surely it doesn't work for me, really not exactly why that is. Setting LD_BIND_NOW *does* work in this situation, however. But it has to be set outside the perl script. This lead me to adding /usr/lib/libtdsodbc.so to /etc/ld.so.preload. Magically, all the segfault problems go away. But since this is only needed for DBD::ODBC, I think it's better to fix the problem there, or with unixODBC, which should successfully load libtdsodbc before it's needed, since it's linked to it. If that's, indeed, the problem... I'm hoping that someone close to the code is interested enough to (help) pursue this with the respective maintainers of these ODBC driver/manager packages, or make some suggestions to the DBD::ODBC build script, to figure out why this is happening and maybe solve it. ;-) For myself, I use Gentoo, so always assumed maybe some fault there, but this just happened with a RedHat user as well, who says, "This should probably be noted on the documentation pages since I assume anyone running a similar linux such as redhat 3 will experience the same issue." So, I thought you folks should hear about it all again. HTH... else, sorry for the noise. Cheers, -- |\ /| | | ~ ~ | \/ | |---| `|` ? | |ichael | |iggins \^ / michael.higgins[at]evolone[dot]org
