PR# 19657 Segmentation violation: (Void, separate...) actual arguments passed via agent.

Problem Report Summary
Submitter: rosivaldo
Category: SCOOP
Priority: Low
Date: 2020/07/28
Class: Bug
Severity: Critical
Number: 19657
Release: EiffelStudio 20.05 (20.05.10.4521 - win64)
Confidential: No
Status: Open
Responsible:
Environment: win64 (mingw)
Synopsis: Segmentation violation: (Void, separate...) actual arguments passed via agent.

Description
Two arguments, of type detachable separate CHARACTER_REF, causes a segmentation violation upon the following scenario: one actual argument is void and the other is actually separate; besides, the call must be done via an agent.
To Reproduce
Freeze the system consisting of the class below with complete void-safety and SCOOP activated. Run the system in workbench mode.

class
	APPLICATION

create
	make

feature {NONE}

	make
		local
			c: detachable separate CHARACTER_REF
			p: PREDICATE [detachable separate CHARACTER_REF, detachable separate CHARACTER_REF]
		do
			create c
			separate c as sep_c do
				sep_c.set_item ('a')
			end
			p := agent p_x1_x2
			print (p (Void, c))
		end

feature

	p_x1_x2 (x1, x2: detachable separate CHARACTER_REF): BOOLEAN
		do
			--| Segmentation violation upon feature entry
			if attached x1 and attached x2 then
				Result := x1.natural_32_code \\ 2 /= (x1.natural_32_code + x2.natural_32_code) \\ 2
			end
		end

end
Problem Report Interactions