Hello Sieghard.

>But - did you also test it with threaded applications (e.g. the ide)?

Yes, of course MSEide and ideU.

Both work perfectly now on both NetBSD and OpenBSD.

>The data structure is defined in "kernel/mselibc.pas", and the pertaining 
>section is this:

Yes, I added this because the pthread_mutex_t = record is different for NetBSD 
vs OpenBSD/FreeBSD.
I found the definition in NetBSD doc/header.

> Thus, accesses _may_ cause "irritations" to the system, making it behave 
> erratically.

Yes, of course, I am not expert at all in NetBSD, all was done step by step, 
maybe there are errors in definition somewhere.
But, using MSEide and ideU is ok, can edit the forms and widgets, the text, 
compile and debug, like in other OS.

I dont know if it exists some people that uses NetBSD or OpenBSD with graphic, 
anyway, good news for them, MSEgui does it!

Fre;D

________________________________
De : Sieghard via mseide-msegui-talk <mseide-msegui-talk@lists.sourceforge.net>
Envoyé : mardi 15 août 2023 23:10
À : mseide-msegui-talk@lists.sourceforge.net 
<mseide-msegui-talk@lists.sourceforge.net>
Cc : Sieghard <s_c_...@arcor.de>
Objet : Re: [MSEide-MSEgui-talk] Run msegui apps on NetBSD and OpenBSD freeze 
if using 2xclick.

Hello Fred,

you wrote on Tue, 15 Aug 2023 01:39:42 +0000:

> Yeeeep, I get it.
>
> In mseapplication.pas,
> constructor tcustomapplication.create(aowner: tcomponent);
>
> At the end, line 1248 there is a "lock" and, strangely for NetBSD and
> OpenBSD it blocks the application when 2x click on the binary from a
> window manager.
>
> This fix it:
>
>  {$if not defined(openbsd) and not defined(netbsd)}
>  lock;
>  {$endif}
>
> Tested deeply on both openbsd and netbsd, all is working perfectly, even

So this nullifies my suspicion about a possibly missingcontrolling terminal.

But - did you also test it with threaded applications (e.g. the ide)?
As I see it, this "lock" uses a system mutex data structure which is used
for thread interlocking and such things to avoid mixed-up data accesses and
race conditions, even possible dead locks. If it is missing or not properly
initialized, bad things might happen, especially in situations where that
is very difficult to track down...

The data structure is defined in "kernel/mselibc.pas", and the pertaining
section is this:
----
const
 __SIZEOF_PTHREAD_MUTEX_T = {$ifdef CPU64}40{$else}24{$endif};
type
  Ppthread_mutex_t = ^pthread_mutex_t;

{$ifndef netbsd}
  pthread_mutex_t = array[0..__SIZEOF_PTHREAD_MUTEX_T-1] of byte;
{$else}
  pthread_mutex_t = record
         ptm_magic : dword;
         ptm_errorcheck: char;
         ptm_pad: array[0..2] of char;
         ptm_interlock: char;
         ptm_pad2: array[0..2] of char;
         ptm_owner: pointer;
         ptm_waiter: pointer;
         ptm_recursed: dword;
         ptm_spare2: pointer;
      end;
{$endif}
----
Well - for (at least) netbsd this defines a record of size _28_ or 40 bytes
in size, PROVIDED the mutex record is byte-aligned in netbsd. If that
was NOT the case, this definition might be out of order and possibly too
small in size, depending on the declaration. Thus, accesses _may_ cause
"irritations" to the system, making it behave erratically.

Sorry, I don't have any access to a netbsd system right now (would have to
find one and install it in a VM), so I cannot test whether this bears any
relevance to the problem. I only suspect that it might be able to cause
problems in some situations, and it should be expected to do so for use on
older, 32-bit, machines.
Just warning.
(And, you know, I was bitten by a well-meant "enhancement" to the db stuff
myself. I'm going to build a pertaining sample application now to test this
myself, and I do have some use for one anyway.)

--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------




_______________________________________________
mseide-msegui-talk mailing list
mseide-msegui-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk
_______________________________________________
mseide-msegui-talk mailing list
mseide-msegui-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mseide-msegui-talk

Reply via email to