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

Reply via email to