There is a bug in attachbelow patch.

Change one line inside attachBelow() function.

- if(c->mon->sel == NULL || c->mon->sel->isfloating) {
+ if (c->mon->sel == NULL || c->mon->sel == c || c->mon->sel->isfloating) {

Br,
Jakub Leszczak

On Thu, Jun 4, 2020 at 12:17 PM Cadey Alicia Ratio <ca...@firemail.cc> wrote:
>
> I have found a bit of a peculiar issue when using the [attachbelow][1]
> patch. It seems that when you send windows between monitors using it,
> it creates a circular linked list that causes the following block of
> code to create an infinite loop:
>
>     for (c = m->clients; c; c = c->next) {
>         occ |= c->tags;
>         if (c->isurgent)
>                 urg |= c->tags;
>     }
>
> If you end up running into this while dwm is running, you can attach to
> the process with gdb and do the following to unstuck it:
>
>     bt full (to verify you are in drawbar())
>     set c->next = 0x0
>
> This should unbreak dwm until the next time you attempt to send a window
> between monitors.
>
> I have tried to debug this further, but I seem to be reaching the limits
> of my C knowledge trying to diagnose and fix the root cause.
>
> This seems to show up most often when there is only one window on the
> monitor.
>
> Any advice would be appreciated.
>
> Be well,
>
> Cadey Ratio
>
> ---
>
> la budza pu cusku lu
>  <<.i ko do snura .i ko do kanro
>    .i ko do panpi .i ko do gleki
>

Reply via email to