using a Freepascal 64bit UDF causes the engine to exit on client disconnect ---------------------------------------------------------------------------
Key: CORE-3651 URL: http://tracker.firebirdsql.org/browse/CORE-3651 Project: Firebird Core Issue Type: Bug Components: Engine Affects Versions: 2.5.2 Environment: Linux x86_64 (tested on Ubuntu 11.10) Firebird 2.5.2 64bit Reporter: Frank Schlottmann-Goedde create a simple freepascal udf: library test64; uses strings; procedure str_same(instring,outstring:pchar);cdecl;export; begin strcopy(outstring,instring); {return instring} end; exports str_same name 'str_same'; begin end. declare it to the engine: DECLARE EXTERNAL FUNCTION STR_SAME cstring(256), cstring(256) RETURNS parameter 2 ENTRY_POINT 'str_same' MODULE_NAME 'test64'; use it: fsg@fsg-ThinkPad-E520:~/src/fpc/fsg_udf$ isql -user sysdba -password masterke localhost:/opt/ibdata/employee.fdb Database: localhost:/opt/ibdata/employee.fdb, User: sysdba SQL> select str_same('test2') from rdb$database; STR_SAME =============================================================================== test2 SQL> quit; fsg@fsg-ThinkPad-E520:~/src/fpc/fsg_udf$ strace will report: root@fsg-ThinkPad-E520:~# strace -p 5102 Process 5102 attached - interrupt to quit restart_syscall(<... resuming interrupted call ...>) = 1 poll([{fd=0, events=POLLIN}], 1, -1) = 1 ([{fd=0, revents=POLLIN}]) recvfrom(0, "\0\0\0\37\0\0\0\2", 8192, 0, NULL, NULL) = 8 clone(child_stack=0x7fdb35e1bf90, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fdb35e1c9d0, tls=0x7fdb35e1c700, child_tidptr=0x7fdb35e1c9d0) = 5113 futex(0x7fdb37d1ac48, FUTEX_WAKE_PRIVATE, 1) = 1 poll([{fd=0, events=POLLIN}], 1, 60000) = 1 ([{fd=0, revents=POLLIN}]) poll([{fd=0, events=POLLIN}], 1, -1) = 1 ([{fd=0, revents=POLLIN}]) recvfrom(0, "\0\0\0\37\0\0\0\1", 8192, 0, NULL, NULL) = 8 futex(0x7fdb35e1bd80, FUTEX_WAKE_PRIVATE, 1) = 1 futex(0x7fdb37d1abe0, FUTEX_WAKE_PRIVATE, 1) = 1 poll([{fd=0, events=POLLIN}], 1, 60000) = 1 ([{fd=0, revents=POLLIN}]) poll([{fd=0, events=POLLIN}], 1, -1) = 1 ([{fd=0, revents=POLLIN}]) recvfrom(0, "\0\0\0C\0\0\0\3\0\0\0\2\0\0\0\25\0\0\0\0", 8192, 0, NULL, NULL) = 20 poll([{fd=0, events=POLLIN}], 1, 60000PANIC: attached pid 5102 exited with 0 <unfinished ... exit status 0> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira ------------------------------------------------------------------------------ RSA(R) Conference 2012 Save $700 by Nov 18 Register now http://p.sf.net/sfu/rsa-sfdev2dev1 Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel