This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

A bug about exception


Hi sir:
  Best regards.
  I still want to report a bug of gcc2.95.2,which deals with exception is incorrect on i386 Solaris2.7. If a routine in share lib throws a exception, "try ... catch" will lose it ! The following is my report.
 
  (1) The version of GCC.
      gcc 2.95.2
 
  (2) A complete input file that will reproduce the bug.
  (3) Additional information from a debugger might enable someone to find a problem on a machine which he does not have available.
      Sorry,because the bug is very special, I can only tell you how to hack:
      (a) Go to http://www.orcane.net/freeodbc++/ , and download the "libodbc++-0.2.1".
      (b) Go to http://www.iodbc.org , and download the "iODBC Driver Manager".
      (c) Install and compile "iodbc",the step is simple, just tar,compile and make install.
      (d) Install and compile "libodbc++-0.2.1"(you need not install any database,our goal is to let "libodbc++-0.2.1" throwing exception)
          # tar xvf ...
          # ./configure
          # make
          # make install
      (e) Now start to test it:
          # cd libodbc++-0.2.1/tests
          run "mysql" to hack
          # ./mysql DSN=test
          Since we haven't install any database,then "mysql" will core dump during to losing "exception",and looks like:
          # gdb -core core .libs/mysql
 
This GDB was configured as "i386-pc-solaris2.7"...
Core was generated by `mysql DSN=test'.
Program terminated with signal 6, Abort.
Reading symbols from /usr/home/q3dp/zzxmis/libodbc++-0.2.1/tests/../src/.libs/libodbc++.so.4...done.
Reading symbols from /opt/informix/lib/cli/libifdmr.so...done.
Reading symbols from /opt/informix/lib/cli/libifcli.so...done.
Reading symbols from /usr/local/lib/libstdc++.so.2.10.0...done.
Reading symbols from /usr/lib/libm.so.1...done.
Reading symbols from /usr/lib/libc.so.1...done.
Reading symbols from /opt/informix/lib/esql/libifgls.so...done.
Reading symbols from /opt/informix/lib/esql/libifglx.so...done.
Reading symbols from /usr/lib/libaio.so.1...done.
Reading symbols from /usr/lib/libdl.so.1...done.
Reading symbols from /usr/lib/libelf.so.1...done.
Reading symbols from /usr/lib/libnsl.so.1...done.
Reading symbols from /usr/lib/libsocket.so.1...done.
Reading symbols from /usr/lib/libmp.so.2...done.
#0  0xdfd9a7f4 in _kill ()
(gdb) where
#0  0xdfd9a7f4 in _kill ()
#1  0xdfd5fc92 in raise ()
#2  0xdfd501a8 in abort ()
#3  0xdfe01fcc in __terminate ()
#4  0xdfe01fe9 in __terminate ()
#5  0xdfe02894 in throw_helper (eh=0xdfe1ac60, pc=0xdff8902c, my_udata=0x8047004, offset_p=0x8047000)
#6  0xdfe02a4d in __throw ()
#7  0xdff8902d in odbc::ErrorHandler::_checkErrorODBC3 (this=0x8058a10, handleType=2, handle=134597944,
    ret=-1, what=@0x8047140) at errorhandler.cc:189
#8  0xdff893b5 in odbc::ErrorHandler::_checkConError (this=0x8058a10, hdbc=134597944, r=-1,
    what=0xdffb4e40 "Failed to connect to datasource") at ../include/odbc++/errorhandler.h:91
#9  0xdff6ac31 in odbc::Connection::_connect (this=0x8058a10, connectString=@0x80472fc) at connection.cc:211
#10 0xdff69bae in odbc::DriverManager::getConnection (connectString=@0x80472fc) at drivermanager.cc:156
#11 0x8052a96 in main (argc=2, argv=0x804732c) at mysql.cc:501
 
      If we compile "libodbc++-0.2.1" with static lib,and link "mysql" with static "libodbc++-0.2.1" lib, the result is ok, "mysql" will exit normal.
          # cd libodbc++-0.2.1
          # ./configure --with-static --enable--static
          # make
          # make install
 
  (4) The type of machine you are using, and the operating system name and version number.
      Machine: PC Intel CPU and AMD K6 233
      OS: Solaris 2.7 i386
      Assembler: Sun as and GNU as 2.9.1
 
----------
Bill Zheng
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]