UDP error 22: Invalid argument when sending message.
- Lazarus/FPC Version: Lazarus 2.2.4 (rev Unknown) FPC 3.2.2 x86_64-freebsd-gtk2
- Operating System: FreeBSD 13.1
- CPU / Bitness: 64 Bit
- Installed using: pkg install lazarus-gtk2 fpc fpc-sources, fpc-units, fpc-docs fpc-utils
Components installed: lNET,
What happens
When sending a message over UDP, an error is received: Send error[22]: Invalid argument.
What did you expect
Expected no error. The same code works when using Lazarus 2.2.2.
Steps to reproduce
1: Open python and create a UPD socket server execute the following
import socket
scksrv = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
scksrv.bind(('127.0.0.1', 23223))
scksrv.recvfrom(100)
2: Create in lazarus form. Drop the lNet UDPComponent on it. Craete a button, with an OnClick event. Create also an Error event on the UDPComponent.
procedure TForm1.Button1Click(Sender: TObject);
begin
LUDPComponent1.Host := '127.0.0.1';
LUDPComponent1.Port := 23223;
if LUDPComponent1.Connect(LUDPComponent1.Host, LUDPComponent1.Port) then
LUDPComponent1.SendMessage('Hello', Format('%s:%d', [LUDPComponent1.Host, LUDPComponent1.Port]))
else
ShowMessage('Connection failed');
end;
procedure TForm1.LUDPComponent1Error(const msg: string; aSocket: TLSocket);
begin
ShowMessage(msg);
end;
3: Compile: Note that the following two messages are displayed in the message window:
Error: /usr/local/bin/ld.bfd: warning: /usr/local/lib/fpc/3.2.2/units/x86_64-freebsd/rtl/cprt0.o: missing .note.GNU-stack section implies executable stack Error: /usr/local/bin/ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
4: When the form is visible, click the button -> Error message: Send error [22]: Invalid argument.
Further info
An a different VM also FreeBSD 13.1, having the same version of FPC 3.2.2_3 but Lazarus 2.2.2 the same code does work. The difference is in the output during the compile cycle. The messages in 3: are absent (on Lazarus 2.2.2). There is a difference between into /usr/local/lib/fpc/3.2.2/units/x86_64-freebsd/rtl/cprt0.0 on 2.2.2 and 2.2.4 - file size is the same, content is partly different.