I think this patch is not the case, because I've got catch(...) in my (old?) 
version everywhere.
Actually I had syntax errors in my lua code (used . instead of : when calling 
methods). Now no crash when I fixed them, but the sigsegv is very bad thing 
regardless the bugs in user code.

My opinion that it looks like there is no catch() in fiber code:
static void
fiber_loop(void *data __attribute__((unused)))
{
    for (;;) {
        assert(fiber != NULL && fiber->f != NULL && fiber->fid != 0);
        @try {
            fiber->f(fiber->f_data);
        } @catch (FiberCancelException *e) {
            say_info("fiber `%s' has been cancelled", fiber_name(fiber));
            say_info("fiber `%s': exiting", fiber_name(fiber));
        } @catch (tnt_Exception *e) {
            [e log];
        } @catch (id e) { ----------------------------- SHOUD BE ... 
HERE????????????????????
            say_error("fiber `%s': exception `%s'",
                fiber_name(fiber), object_getClassName(e));
            panic("fiber `%s': exiting", fiber_name(fiber));
        }
        fiber_zombificate();
        fiber_yield();    /* give control back to scheduler */
    }
}

ubuntu@ubuntu:~/temp/tarantool-debug/src/box$ ./tarantool_box --version
Tarantool/Box 1.4.9-12-g5a0af97
Target: Linux-x86_64-Debug
Build options: cmake . -DCMAKE_INSTALL_PREFIX=/usr/local -DENABLE_STATIC=OFF 
-DENABLE_TRACE=ON -DENABLE_BACKTRACE=ON -DENABLE_CLIENT=OFF
Compiler: /home/buildslave/gcc46/bin/gcc /home/buildslave/gcc46/bin/c++
C_FLAGS: -fno-omit-frame-pointer -fno-stack-protector -fexceptions 
-funwind-tables -msse2 -static-libgcc -std=gnu99 -Wall -Wextra 
-Wno-sign-compare -Wno-strict-aliasing -Werror -pthread

-- 
You received this bug notification because you are a member of Tarantool
Development Team, which is subscribed to tarantool.
https://bugs.launchpad.net/bugs/1180389

Title:
  sigsegv when using fibers from lua in
  _Unwind_RaiseException/err_raise_ext on 32bit ubuntu

Status in Tarantool - an efficient in-memory data store:
  New

Bug description:
  Segmentation fault
  Current time: 1368623928
  Please file a bug at http://bugs.launchpad.net/tarantool
  Attempting backtrace... Note: since the server has already crashed, 
  this may fail as well
          - { frame: 0x13a5d0, caller: 0x8078fec }
          - { frame: 0x13a680, caller: 0x80d400 }
          - { frame: 0x13adf0, caller: 0x80b6844 }
          - { frame: 0x13ae20, caller: 0x80b6d79 }
          - { frame: 0x13ae60, caller: 0x80b708f }
          - { frame: 0x13ae90, caller: 0x80b733d }
          - { frame: 0x13aeb0, caller: 0x80a5a14 }
          - { frame: 0x13aef0, caller: 0x80d6f0f }
  Aborted

  
  it seems its because of exchange_fiber function content (doesn't crash if 
exchange_fiber() is empty). See attached file for lua code. Problem reproduced 
on ubuntu (salentos) 32 bit under vmware workstation 9. 

  function exchange_fiber(fixChan)
    print("exchange_fiber");
    while true do
      local msg = fixChan:get();
    end
  end

  function libfin_test()
    local boxChan = box.ipc.channel();
    local orderGen = box.fiber.create(ordergen_fiber);
    local fc1 = LibFin.FixChannel:new(boxChan);
    box.fiber.resume(orderGen, fc1);
    local exchange = box.fiber.create(exchange_fiber);
    local fc2 = LibFin.FixChannel:new(boxChan);
    box.fiber.resume(exchange, fc2);
  end

  Version of tarantool is:

  #define TC_VERSION_MAJOR "0"
  #define TC_VERSION_MINOR "2"

  
  full log

  ubuntu@ubuntu:~/temp/tarantool-debug/src/box$ ./tarantool_box 
  2013-05-15 06:18:26.826 [7492] 1/sched I> space 0 successfully configured
  2013-05-15 06:18:26.831 [7492] 1/sched I> recovery start
  2013-05-15 06:18:26.831 [7492] 1/sched I> recover from 
`./00000000000000000001.snap'
  2013-05-15 06:18:26.831 [7492] 1/sched I> snapshot recovered, confirmed lsn: 1
  2013-05-15 06:18:26.831 [7492] 1/sched I> building secondary indexes
  2013-05-15 06:18:26.832 [7492] 1/sched I> bound to port 33013
  2013-05-15 06:18:26.833 [7492] 1/sched I> I am primary
  2013-05-15 06:18:26.833 [7492] 1/sched I> bound to port 33014
  2013-05-15 06:18:26.833 [7492] 1/sched I> bound to port 33015
  2013-05-15 06:18:26.834 [7492] 101/init.lua I> loading ./init.lua
  2013-05-15 06:18:26.834 [7492] 101/init.lua I> Hello from init.lua ver 0.1
  2013-05-15 06:18:26.834 [7492] 101/init.lua I> Starting LibFin...
  2013-05-15 06:18:26.834 [7492] 101/init.lua I> LibFin ver %s initialized0.112
  2013-05-15 06:18:26.843 [7492] 1/sched C> log level 4
  2013-05-15 06:18:26.843 [7492] 1/sched C> entering event loop
  2013-05-15 06:18:26.845 [7492] 101/init.lua I> Connected to 192.168.136.18172
  2013-05-15 06:18:26.868 [7492] 101/init.lua I> Line:BASEDIR 
S:/ubuntu/temp/tarantool-debug/src/box/

  2013-05-15 06:18:26.871 [7492] 101/init.lua I> Line:DELB libfin.lua 79

  2013-05-15 06:18:26.873 [7492] 101/init.lua I> Line:DELB libfin.lua 70

  2013-05-15 06:18:26.967 [7492] 101/init.lua I> Line:SETB LibFin.lua 70

  2013-05-15 06:18:27.073 [7492] 101/init.lua I> Line:SETB LibFin.lua 79

  2013-05-15 06:18:27.187 [7492] 101/init.lua I> Line:LOAD 2259
  LibFin.lua

  2013-05-15 06:18:28.646 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:29.146 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:29.593 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:36.912 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:38.993 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:39.847 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:41.688 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:42.457 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:43.553 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:43.553 [7492] 102/lua I> ordergen_fiber 
  2013-05-15 06:18:44.465 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:44.895 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:45.790 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:46.243 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:46.756 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:47.267 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:48.815 [7492] 101/init.lua I> Line:RUN

  2013-05-15 06:18:48.816 [7492] 103/lua I> exchange_fiber
  Segmentation fault
  Current time: 1368623928
  Please file a bug at http://bugs.launchpad.net/tarantool
  Attempting backtrace... Note: since the server has already crashed, 
  this may fail as well
          - { frame: 0x13a5d0, caller: 0x8078fec }
          - { frame: 0x13a680, caller: 0x80d400 }
          - { frame: 0x13adf0, caller: 0x80b6844 }
          - { frame: 0x13ae20, caller: 0x80b6d79 }
          - { frame: 0x13ae60, caller: 0x80b708f }
          - { frame: 0x13ae90, caller: 0x80b733d }
          - { frame: 0x13aeb0, caller: 0x80a5a14 }
          - { frame: 0x13aef0, caller: 0x80d6f0f }
  Aborted
  ubuntu@ubuntu:~/temp/tarantool-debug/src/box$

To manage notifications about this bug go to:
https://bugs.launchpad.net/tarantool/+bug/1180389/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~tarantool-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~tarantool-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to