* Re: Some experience with the igc branch
2024-12-22 17:41 ` Pip Cet via Emacs development discussions.
@ 2024-12-22 17:56 ` Gerd Möllmann
2024-12-22 19:11 ` Óscar Fuentes
` (2 subsequent siblings)
3 siblings, 0 replies; 14+ messages in thread
From: Gerd Möllmann @ 2024-12-22 17:56 UTC (permalink / raw)
To: Pip Cet; +Cc: Óscar Fuentes, emacs-devel, Helmut Eller, Andrea Corallo
Pip Cet <pipcet@protonmail.com> writes:
> 3. bytecode stack marking. That comment raises my red-flag alert,
> because it sounds like we're just accepting a preventable crash at this
> stage rather than wanting to do anything about it. The reality, of
> course, is different, but I'd be happier if we refused to create a byte
> code object that intends to use more stack than we can guarantee we
> would scan. Can we do that?
>
> Pip
You mean my comment here?
static mps_res_t
scan_bc (mps_ss_t ss, void *start, void *end, void *closure)
{
MPS_SCAN_BEGIN (ss)
{
struct igc_thread_list *t = closure;
struct bc_thread_state *bc = &t->d.ts->bc;
igc_assert (start == (void *) bc->stack);
igc_assert (end == (void *) bc->stack_end);
/* FIXME/igc: AFAIU the current top frame starts at
bc->fp->next_stack and has a maximum length that is given by the
bytecode being executed (COMPILED_STACK_DEPTH). So, we need to
scan upto bc->fo->next_stack + that max depth to be safe. Since
I don't have that number ATM, I'm using an arbitrary estimate for
now.
This must be changed to something better. Note that Mattias said
the bc stack marking will be changed in the future. */
const size_t HORRIBLE_ESTIMATE = 1024;
char *scan_end = bc_next_frame (bc->fp);
scan_end += HORRIBLE_ESTIMATE;
end = min (end, (void *) scan_end);
if (end > start)
IGC_FIX_CALL (ss, scan_ambig (ss, start, end, NULL));
}
MPS_SCAN_END (ss);
return MPS_RES_OK;
}
I never felt like changing the byte code stack, TBH. For reasons :-).
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-22 17:41 ` Pip Cet via Emacs development discussions.
2024-12-22 17:56 ` Gerd Möllmann
@ 2024-12-22 19:11 ` Óscar Fuentes
2024-12-23 0:05 ` Pip Cet via Emacs development discussions.
2024-12-23 6:27 ` Jean Louis
2024-12-22 20:29 ` Helmut Eller
2024-12-22 20:50 ` Gerd Möllmann
3 siblings, 2 replies; 14+ messages in thread
From: Óscar Fuentes @ 2024-12-22 19:11 UTC (permalink / raw)
To: emacs-devel; +Cc: Pip Cet, Gerd Möllmann, Helmut Eller, Andrea Corallo
Pip Cet via "Emacs development discussions." <emacs-devel@gnu.org>
writes:
>> I suspect that some of those
>> pauses are not related to garbage collection (executing code and moving
>> data also takes time.)
>
> Quite possible. Even if it is GC, please keep in mind that MPS has many
> settings which you can play with, and it can improve things a lot. It's
> not too early to become a fan of the scratch/igc branch, but it is too
> early to reject it for performance reasons. It's a "heads you lose, tails I
> win" situation, I guess.
IIRC MPS is well documented and I can look up those settings, but does
Emacs collect the required info for taking informed decisions?
Anyway, with the setup I'm using for this job is totally unrealistic to
expect instant reaction from Emacs, there is too much heavy stuff
kicking in for every keypress.
> 1. The signal issue. I don't have a good way to fix this and make
> everyone happy, but I do have a solution which hasn't caused a crash for
> me in quite a while. It may be good enough.
Inevitably, a few minutes after sending my message Emacs froze after
working flawlessly since you fixed the JSON issue.
Redisplay just stopped while showing the menu, no crash nor infinite
loop, its CPU usage was typical for the repeating timers that my config
creates. Sadly, instead of attaching gdb I tried to wake up Emacs by
sending SIGUSR1 (no effect, as it is the wrong signal, should be
SIGUSR2) and then sent SINGINT by mistake, which terminated the process.
It's very likely that MPS is innocent on this, but I'm happy to apply
and test any stability improvement patch you have and wish to share.
Thanks.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-22 19:11 ` Óscar Fuentes
@ 2024-12-23 0:05 ` Pip Cet via Emacs development discussions.
2024-12-23 1:00 ` Óscar Fuentes
2024-12-23 3:42 ` Gerd Möllmann
2024-12-23 6:27 ` Jean Louis
1 sibling, 2 replies; 14+ messages in thread
From: Pip Cet via Emacs development discussions. @ 2024-12-23 0:05 UTC (permalink / raw)
To: Óscar Fuentes
Cc: emacs-devel, Gerd Möllmann, Helmut Eller, Andrea Corallo
Óscar Fuentes <ofv@wanadoo.es> writes:
> Pip Cet via "Emacs development discussions." <emacs-devel@gnu.org>
> writes:
>
>>> I suspect that some of those
>>> pauses are not related to garbage collection (executing code and moving
>>> data also takes time.)
>>
>> Quite possible. Even if it is GC, please keep in mind that MPS has many
>> settings which you can play with, and it can improve things a lot. It's
>> not too early to become a fan of the scratch/igc branch, but it is too
>> early to reject it for performance reasons. It's a "heads you lose, tails I
>> win" situation, I guess.
>
> IIRC MPS is well documented and I can look up those settings, but does
> Emacs collect the required info for taking informed decisions?
Not that I'm aware of, at this point.
>> 1. The signal issue. I don't have a good way to fix this and make
>> everyone happy, but I do have a solution which hasn't caused a crash for
>> me in quite a while. It may be good enough.
>
> Inevitably, a few minutes after sending my message Emacs froze after
> working flawlessly since you fixed the JSON issue.
Sorry to hear it, and thanks for letting us know! If it happens again,
any additional information you can provide would be very helpful.
> Redisplay just stopped while showing the menu, no crash nor infinite
> loop, its CPU usage was typical for the repeating timers that my config
> creates.
That's a bit odd. It might be the signal issue, but that's purely a
guess. If it happens again, please let us know.
Which windowing system are you using, and how are you displaying menus,
though?
> It's very likely that MPS is innocent on this, but I'm happy to apply
> and test any stability improvement patch you have and wish to share.
I just pushed the temporary fix for the signal issue, which should
improve stability.
Pip
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-23 0:05 ` Pip Cet via Emacs development discussions.
@ 2024-12-23 1:00 ` Óscar Fuentes
2024-12-23 3:42 ` Gerd Möllmann
1 sibling, 0 replies; 14+ messages in thread
From: Óscar Fuentes @ 2024-12-23 1:00 UTC (permalink / raw)
To: Pip Cet; +Cc: emacs-devel, Gerd Möllmann, Helmut Eller, Andrea Corallo
Pip Cet <pipcet@protonmail.com> writes:
>> Redisplay just stopped while showing the menu, no crash nor infinite
>> loop, its CPU usage was typical for the repeating timers that my config
>> creates.
>
> That's a bit odd. It might be the signal issue, but that's purely a
> guess. If it happens again, please let us know.
Sure.
> Which windowing system are you using, and how are you displaying menus,
> though?
Configured using:
'configure CPPFLAGS=-I/home/oscar/dev/include/mps
LDFLAGS=-L/home/oscar/dev/other/mps/code --with-native-compilation
--with-tree-sitter --without-toolkit-scroll-bars --with-x-toolkit=lucid
--with-modules --without-imagemagick --with-mps=yes'
Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LIBOTF
LIBSELINUX LIBXML2 MODULES MPS NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG
SECCOMP SOUND SQLITE3 THREADS TIFF TREE_SITTER WEBP X11 XAW3D XDBE XIM
XINPUT2 XPM LUCID ZLIB
I have the menubar disabled (menu-bar-mode -1) and use a custom command
to open it:
(defun my-menu-bar-open-after ()
(remove-hook 'pre-command-hook 'my-menu-bar-open-after)
(when (eq menu-bar-mode 42)
(menu-bar-mode -1)))
(defun my-menu-bar-open (&rest args)
(interactive)
(let ((open menu-bar-mode))
(unless open
(menu-bar-mode 1))
(funcall 'menu-bar-open args)
(unless open
(setq menu-bar-mode 42)
(add-hook 'pre-command-hook 'my-menu-bar-open-after))))
(global-set-key [f10] 'my-menu-bar-open)
On that same session I used the command multiple times.
>> It's very likely that MPS is innocent on this, but I'm happy to apply
>> and test any stability improvement patch you have and wish to share.
>
> I just pushed the temporary fix for the signal issue, which should
> improve stability.
Emacs is already running here with that commit. Thanks!
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-23 0:05 ` Pip Cet via Emacs development discussions.
2024-12-23 1:00 ` Óscar Fuentes
@ 2024-12-23 3:42 ` Gerd Möllmann
1 sibling, 0 replies; 14+ messages in thread
From: Gerd Möllmann @ 2024-12-23 3:42 UTC (permalink / raw)
To: Pip Cet; +Cc: Óscar Fuentes, emacs-devel, Helmut Eller, Andrea Corallo
Pip Cet <pipcet@protonmail.com> writes:
> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>> Pip Cet via "Emacs development discussions." <emacs-devel@gnu.org>
>> writes:
>>
>>>> I suspect that some of those
>>>> pauses are not related to garbage collection (executing code and moving
>>>> data also takes time.)
>>>
>>> Quite possible. Even if it is GC, please keep in mind that MPS has many
>>> settings which you can play with, and it can improve things a lot. It's
>>> not too early to become a fan of the scratch/igc branch, but it is too
>>> early to reject it for performance reasons. It's a "heads you lose, tails I
>>> win" situation, I guess.
>>
>> IIRC MPS is well documented and I can look up those settings, but does
>> Emacs collect the required info for taking informed decisions?
>
> Not that I'm aware of, at this point.
Me neither.
(And, at least for me personally, "interactive performance", i.e. the
impression a user gets when he's using Emacs interactively, is the only
interesting part. That's difficult to measure of course. I don't care
much about performance improvements I don't notice :-)).
>
>>> 1. The signal issue. I don't have a good way to fix this and make
>>> everyone happy, but I do have a solution which hasn't caused a crash for
>>> me in quite a while. It may be good enough.
>>
>> Inevitably, a few minutes after sending my message Emacs froze after
>> working flawlessly since you fixed the JSON issue.
>
> Sorry to hear it, and thanks for letting us know! If it happens again,
> any additional information you can provide would be very helpful.
>
>> Redisplay just stopped while showing the menu, no crash nor infinite
>> loop, its CPU usage was typical for the repeating timers that my config
>> creates.
>
> That's a bit odd. It might be the signal issue, but that's purely a
> guess. If it happens again, please let us know.
>
> Which windowing system are you using, and how are you displaying menus,
> though?
Yes. I don't think I've ever seen a freeze caused by igc here. It always
was crashes. But one never knows, of course.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-22 19:11 ` Óscar Fuentes
2024-12-23 0:05 ` Pip Cet via Emacs development discussions.
@ 2024-12-23 6:27 ` Jean Louis
1 sibling, 0 replies; 14+ messages in thread
From: Jean Louis @ 2024-12-23 6:27 UTC (permalink / raw)
To: Óscar Fuentes
Cc: emacs-devel, Pip Cet, Gerd Möllmann, Helmut Eller,
Andrea Corallo
* Óscar Fuentes <ofv@wanadoo.es> [2024-12-22 22:13]:
> > 1. The signal issue. I don't have a good way to fix this and make
> > everyone happy, but I do have a solution which hasn't caused a crash for
> > me in quite a while. It may be good enough.
>
> Inevitably, a few minutes after sending my message Emacs froze after
> working flawlessly since you fixed the JSON issue.
>
> Redisplay just stopped while showing the menu, no crash nor infinite
> loop, its CPU usage was typical for the repeating timers that my config
> creates. Sadly, instead of attaching gdb I tried to wake up Emacs by
> sending SIGUSR1 (no effect, as it is the wrong signal, should be
> SIGUSR2) and then sent SINGINT by mistake, which terminated the process.
>
> It's very likely that MPS is innocent on this, but I'm happy to apply
> and test any stability improvement patch you have and wish to share.
I was using that branch for longer, but being heavy daily user of
Emacs with serious business, I cannot use it, it is not yet
stable. Reasons I have sent already to this list, I had no issues
since I switched to standard Emacs.
Most terrible was that ghostly appearance of words and characters
which I didn't type, or totally scrambling characters which I type.
--
Jean Louis
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-22 17:41 ` Pip Cet via Emacs development discussions.
2024-12-22 17:56 ` Gerd Möllmann
2024-12-22 19:11 ` Óscar Fuentes
@ 2024-12-22 20:29 ` Helmut Eller
2024-12-22 20:50 ` Gerd Möllmann
3 siblings, 0 replies; 14+ messages in thread
From: Helmut Eller @ 2024-12-22 20:29 UTC (permalink / raw)
To: Pip Cet; +Cc: Óscar Fuentes, emacs-devel, Gerd Möllmann,
Andrea Corallo
On Sun, Dec 22 2024, Pip Cet wrote:
> 2. no-purespace. Merging that into scratch/igc would help, well, me.
> What do others think?
No objections from me.
> 3. bytecode stack marking. That comment raises my red-flag alert,
> because it sounds like we're just accepting a preventable crash at this
> stage rather than wanting to do anything about it. The reality, of
> course, is different, but I'd be happier if we refused to create a byte
> code object that intends to use more stack than we can guarantee we
> would scan. Can we do that?
Maybe the bytecode engine could handle large stack frames differently
from small stack frames.
For large stack frames we would:
1. initialize the stack frame with NULLs
2. bump the stack pointer
3. now the stack frame is usable
For small stack frames, we would skip step 1 but the GC would always
scan one extra "small frame with maximal length".
Helmut
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-22 17:41 ` Pip Cet via Emacs development discussions.
` (2 preceding siblings ...)
2024-12-22 20:29 ` Helmut Eller
@ 2024-12-22 20:50 ` Gerd Möllmann
2024-12-22 22:26 ` Pip Cet via Emacs development discussions.
3 siblings, 1 reply; 14+ messages in thread
From: Gerd Möllmann @ 2024-12-22 20:50 UTC (permalink / raw)
To: Pip Cet; +Cc: Óscar Fuentes, emacs-devel, Helmut Eller, Andrea Corallo
Pip Cet <pipcet@protonmail.com> writes:
> Óscar Fuentes <ofv@wanadoo.es> writes:
>> With igc the pauses are still there, but they much shorter and
>> predictable, they no longer distract me from thinking on what I'm
>> writing, which is a huge improvement. I suspect that some of those
>> pauses are not related to garbage collection (executing code and moving
>> data also takes time.)
>
> Quite possible. Even if it is GC, please keep in mind that MPS has many
> settings which you can play with, and it can improve things a lot. It's
> not too early to become a fan of the scratch/igc branch, but it is too
> early to reject it for performance reasons. It's a "heads you lose, tails I
> win" situation, I guess.
>
>> TL/DR: now I enjoy using Emacs with this setup and I'm no longer tempted
>> to switch to other editors for this type of work.
>
> I think this is an important point: ultimately, it's about having daily
> drivers. We need to remove the remaining impediments for that:
>
> 1. The signal issue. I don't have a good way to fix this and make
> everyone happy, but I do have a solution which hasn't caused a crash for
> me in quite a while. It may be good enough.
TBH, I'd have put it in already.
> 2. no-purespace. Merging that into scratch/igc would help, well, me.
> What do others think?
Doesn't affect me much.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-22 20:50 ` Gerd Möllmann
@ 2024-12-22 22:26 ` Pip Cet via Emacs development discussions.
2024-12-23 3:23 ` Gerd Möllmann
0 siblings, 1 reply; 14+ messages in thread
From: Pip Cet via Emacs development discussions. @ 2024-12-22 22:26 UTC (permalink / raw)
To: Gerd Möllmann
Cc: Óscar Fuentes, emacs-devel, Helmut Eller, Andrea Corallo
Gerd Möllmann <gerd.moellmann@gmail.com> writes:
> Pip Cet <pipcet@protonmail.com> writes:
>
>> Óscar Fuentes <ofv@wanadoo.es> writes:
>>> With igc the pauses are still there, but they much shorter and
>>> predictable, they no longer distract me from thinking on what I'm
>>> writing, which is a huge improvement. I suspect that some of those
>>> pauses are not related to garbage collection (executing code and moving
>>> data also takes time.)
>>
>> Quite possible. Even if it is GC, please keep in mind that MPS has many
>> settings which you can play with, and it can improve things a lot. It's
>> not too early to become a fan of the scratch/igc branch, but it is too
>> early to reject it for performance reasons. It's a "heads you lose, tails I
>> win" situation, I guess.
>>
>>> TL/DR: now I enjoy using Emacs with this setup and I'm no longer tempted
>>> to switch to other editors for this type of work.
>>
>> I think this is an important point: ultimately, it's about having daily
>> drivers. We need to remove the remaining impediments for that:
>>
>> 1. The signal issue. I don't have a good way to fix this and make
>> everyone happy, but I do have a solution which hasn't caused a crash for
>> me in quite a while. It may be good enough.
>
> TBH, I'd have put it in already.
Pushed it now. It is imperfect, but better than crashing.
>> 2. no-purespace. Merging that into scratch/igc would help, well, me.
>> What do others think?
>
> Doesn't affect me much.
Well, it does cause some noise, so I thought I'd ask first.
Pip
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Some experience with the igc branch
2024-12-22 22:26 ` Pip Cet via Emacs development discussions.
@ 2024-12-23 3:23 ` Gerd Möllmann
0 siblings, 0 replies; 14+ messages in thread
From: Gerd Möllmann @ 2024-12-23 3:23 UTC (permalink / raw)
To: Pip Cet; +Cc: Óscar Fuentes, emacs-devel, Helmut Eller, Andrea Corallo
Pip Cet <pipcet@protonmail.com> writes:
> Gerd Möllmann <gerd.moellmann@gmail.com> writes:
>
>> Pip Cet <pipcet@protonmail.com> writes:
>>
>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>>>> With igc the pauses are still there, but they much shorter and
>>>> predictable, they no longer distract me from thinking on what I'm
>>>> writing, which is a huge improvement. I suspect that some of those
>>>> pauses are not related to garbage collection (executing code and moving
>>>> data also takes time.)
>>>
>>> Quite possible. Even if it is GC, please keep in mind that MPS has many
>>> settings which you can play with, and it can improve things a lot. It's
>>> not too early to become a fan of the scratch/igc branch, but it is too
>>> early to reject it for performance reasons. It's a "heads you lose, tails I
>>> win" situation, I guess.
>>>
>>>> TL/DR: now I enjoy using Emacs with this setup and I'm no longer tempted
>>>> to switch to other editors for this type of work.
>>>
>>> I think this is an important point: ultimately, it's about having daily
>>> drivers. We need to remove the remaining impediments for that:
>>>
>>> 1. The signal issue. I don't have a good way to fix this and make
>>> everyone happy, but I do have a solution which hasn't caused a crash for
>>> me in quite a while. It may be good enough.
>>
>> TBH, I'd have put it in already.
>
> Pushed it now. It is imperfect, but better than crashing.
100%. Thanks!
>
>>> 2. no-purespace. Merging that into scratch/igc would help, well, me.
>>> What do others think?
>>
>> Doesn't affect me much.
>
> Well, it does cause some noise, so I thought I'd ask first.
>
> Pip
That's nice of you.
^ permalink raw reply [flat|nested] 14+ messages in thread