Multi-monitor support was extended in the Pd 0.48 to allow these kinds of values. Ideally, opening a patch on a different desktop setup should result in the window manager rejecting bad values and returning the window placed on screen.

Previously, the Pd gui did this itself (mostly by forcing windows always on the main screen) but we changed to to ask Tk to do it. It now looks like the new versions of Tk on macOS aren't quite successful and there is a bug. These seemed to work fine for me when I was working on it for Pd 0.48 but maybe Mojave behaves differently?

On Nov 19, 2018, at 12:00 PM, pd-list-request@lists.iem.at wrote:

From: Michael Straeubig <straeubig@gmail.com>
To: pd-list@lists.iem.at
Subject: [PD] pd crashing with patches saved on a 2-monitor setup
(plus workaround)
Message-ID:
<CAHkHHym27M0-iQWQeKajfwwBqJ=syJUiJxhsU9qP+ybFG0Gf=Q@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Hi,

I thought this might be helpful if someone runs into similar problems.

I have a number a small patches I made in August 2014 with the pd version
at that time. Now I tried to open those patches on my current setup (Mac OS
10.14.1 Mojave, pd 0.49-1.64 bit). Most of those patches crashed on
startup. Same result with the 32bit version and with pd 0.48-1 as well. Pd
0.47 and earlier do not run on Mojave, so I couldn't test. I was sure these
patches worked in the past...

This is the crash log.

Application Specific Information:
*** Terminating app due to uncaught exception
'NSInternalInconsistencyException', reason: 'Invalid parameter not
satisfying: CGRectContainsRect(CGRectMake((CGFloat)INT_MIN,
(CGFloat)INT_MIN, (CGFloat)INT_MAX - (CGFloat)INT_MIN, (CGFloat)INT_MAX -
(CGFloat)INT_MIN), frame)'
abort() called
terminating with uncaught exception of type NSException

The first line of one of the offending patches:

#N canvas 681 -998 1010 411 10;

The negative value piqued my interest. It comes from a setup with two
monitors where monitor 2 is on top (north) of monitor 1. Whenever a patch
is saved while on monitor 2, this value is negative and newer pd's crash
opening the patch next time. More experimentation: creating a new patch and
saving while it is on monitor 2 produces the same result.

Workaround: opening the patch with an editor and changing the value to a
positive number lets pd open the patch normally.

Best,
M

--------
Dan Wilcox
@danomatika
danomatika.com
robotcowboy.com