Issue Details (XML | Word | Printable)

Key: CORE-5972
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Adriano dos Santos Fernandes
Reporter: Artyom Smirnov
Votes: 1
Watchers: 3
Operations

If you were logged in you would be able to see more operations.
Firebird Core

External engine trigger crashing server if table have computed field

Created: 06/Dec/18 09:44 AM   Updated: 02/Feb/19 12:45 AM
Component/s: Engine
Affects Version/s: 3.0.4, 4.0 Beta 1
Fix Version/s: 4.0 Beta 1, 3.0.5

QA Status: No test


 Description  « Hide
Reproduction steps (on master):

1. Create simple UDR trigger in examples/udr/Triggers.cpp and build it.

FB_UDR_BEGIN_TRIGGER(dummy)
FB_UDR_EXECUTE_TRIGGER
{
printf("test! \n");
}
FB_UDR_END_TRIGGER

2. Execute it on table with computed field:

create database 'localhost:/tmp/test_trig.fdb';
create table test(id int, comp int computed by (1));
create trigger dummy after insert on test external name 'udrcpp_example!dummy' engine udr;
insert into test values(1);

3. Server will crash.

Stacktrace:

Thread 5 "firebird" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff0c04700 (LWP 15380)]
__memmove_sse2_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:311
311 ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: No such file or directory.
(gdb) bt 6
#0 __memmove_sse2_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:311
#1 0x00007ffff4e62d82 in CVT_move_common (from=0x7ffff0c02440, to=0x7ffff0c02450, decSt=..., cb=0x7ffff47cc700) at /workspace/rdb/firebird_master/src/common/cvt.cpp:1508
#2 0x00007ffff4a85e45 in CVT_move (from=0x7ffff0c02440, to=0x7ffff0c02450, decSt=...) at /workspace/rdb/firebird_master/src/jrd/../jrd/cvt_proto.h:74
#3 0x00007ffff4b4d66f in MOV_move (tdbb=0x7ffff0c03580, from=0x7ffff0c02440, to=0x7ffff0c02450) at /workspace/rdb/firebird_master/src/jrd/mov.cpp:449
#4 0x00007ffff4977d9f in Jrd::ExtEngineManager::Trigger::setValues (this=0x7ffff4378c80, tdbb=0x7ffff0c03580, msgBuffer=..., rpb=0x7fffe8fe55f0)
    at /workspace/rdb/firebird_master/src/jrd/ExtEngineManager.cpp:983
#5 0x00007ffff49777e8 in Jrd::ExtEngineManager::Trigger::execute (this=0x7ffff4378c80, tdbb=0x7ffff0c03580, action=1, oldRpb=0x0, newRpb=0x7fffe8fe55f0)
    at /workspace/rdb/firebird_master/src/jrd/ExtEngineManager.cpp:914
(More stack frames follow...)
(gdb) f 1
#1 0x00007ffff4e62d82 in CVT_move_common (from=0x7ffff0c02440, to=0x7ffff0c02450, decSt=..., cb=0x7ffff47cc700) at /workspace/rdb/firebird_master/src/common/cvt.cpp:1508
1508 memcpy(p, q, length);
(gdb) p q
$1 = (const UCHAR *) 0x0


 All   Comments   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Adriano dos Santos Fernandes added a comment - 21/Jan/19 03:07 PM
Please test master, then I will backport the fix.

Adriano dos Santos Fernandes added a comment - 30/Jan/19 02:14 PM
@Artyom do you have some plan to test it?

Artyom Smirnov added a comment - 30/Jan/19 02:53 PM
I will test it tomorrow.

Artyom Smirnov added a comment - 31/Jan/19 09:00 AM
I have tested mostly with fbjava and bit with udr engine, looks like all OK.