Some findings by Arnold can be found at:
http://lilypond.1069038.n5.nabble.com/Issue-4934-analysis-indicates-new-issue-td224851.html
regrettable there is a typo: 4934 <-> 4943 in his post.

I'll  quote it here entirely:

> Hello,
> as I got this assertion failure on multiple scores on Win7 (on scores which
> I created in sequence) I did tried to analyse this problem.
> 
> All my effected scores had one system per page. On the last page the
> system is compressed.
> If I apply tiny changes to the global-staff-size, there is a chance of 50 %
> the lilypond run will succeed or it will terminate with assertion from
> function
> Page_breaking::min_page_count() in file lily/page-breaking.cc.
> This problem does occur on Windows (mingw compilation), but not on
> Linux compilations (executed in a LILYDEV VM on my Windows computer).
> 
> Tracing this function ‘Page_breaking::min_page_count()’ by additional
> text output in the LILYDEV VM did show, the critical code must be in
> line 1178. The comparison there is sensitive to rounding errors between
> 80 bit floating point and 64 bit floating point variables, a typical code
> problem in IA32 compilations for Windows, where function return values
> are passed back in the 80 bit floating point register of the X87 arithmetic
> coprocessor.
> If the last page contains a single compressed system, the stored (double)
> value ‘cur_rod_height’ and the function return value (in X87 register in
> IA32 architecture) from ‘cached_line_details_.back().full_height()’ were
> equal in the Linux version.
> 
> Together with ‘harm6’ at the German Lilypond Forum it got a MINGW
> compilation for Windows with tracing text output. It did prove what I
> expected:
> 
> (1) The assertion is thrown, because the function return value of
> ‘cached_line_details_.back().full_height()’ is ‘more exact’ (longer
> mantissa)
> than the double value stored in cur_rod_height. The function return value
> is a 80 bit floating point value, and not rounded to the mantissa length
> of the 64 bit floating point value it’s going to be compared with.
> 
> (2) The check in line 1178 of lily/page-breaking.cc, which is:
> && cur_rod_height > cached_line_details_.back ().full_height ())
> can be replaced with:
> && page_starter + 1 != cached_line_details_.size())
> which does not compare (inexact) floating point numbers anymore to
> check if there is only one system on the last page, to solve issue 4934.
> 
> Beside that, I found:
> 
> (3) In the past, rounding to 64 bit floating point numbers in the
> MINGW compilation was forced by _FPU_SETCW() in function
> configure_fpu() from file lily\main.cc.
> In this MINGW test compilation this code was not reached!
> As this can cause many other peculiar problems, not so simple to
> detect as this issue 3934, a new issue should be opened:
> 
> /++++++++++++++++++
> Repair the broken support of configure_fpu() in the
> mingw installation of GUB
> /++++++++++++++++++
> 
> For a more easy check during GUB compilation I suggest to add
> a conditional compile time error (or warning if you prefer) into
> lily/main.cc to the empty dummy function configure_fpu():
> 
> ... starting at line 202 of lily/main.cc ...

~~~
 #include <fpu_control.h>
 static void
 configure_fpu ()
 {
   fpu_control_t fpu_control = 0x027f;
   _FPU_SETCW (fpu_control);
 }
 
 #else
 
 static void
 configure_fpu ()
 {
+/* throw compilation error if MINGW 32bit with x87 */
+#if defined (__MINGW32__) && defined (__code_model_32__) &&
!defined(__SSE2_MATH__)
+#pragma GCC error "No FPU CONTROL in MINGW compilation required, but NOT
found"
+#endif
 }
 
 #endif /* defined(__x86__) || defined(__i386__) */
~~~

> Furthermore, there are also command line options reported for MINGW
> to set the floating point precision.
> But notice, ‘-mpc64’ did not help for a simple test program on my MINGW
> compilation in the LILYDEV VM. That might be the same origin as support
> of configure_fpu() is broken in the GUB.
> Instead ‘-march=pentium4 -mfpmath=sse -msse2' did work, but this
> drops support for older CPU types.
> 
> 
> ArnoldTheresius 





---

** [issues:#4943] Manual page breaking causing assertion failure**

**Status:** Accepted
**Created:** Sat Jul 23, 2016 10:51 AM UTC by pkx166h
**Last Updated:** Thu Jan 10, 2019 01:27 PM UTC
**Owner:** nobody
**Attachments:**

- 
[AssertionFailing.ly](https://sourceforge.net/p/testlilyissues/issues/4943/attachment/AssertionFailing.ly)
 (1.1 kB; text/x-lilypond)


On Sat, 9 Jan 2016 at 09:55 Chris Yate <[email protected]> wrote:

> So, it turns out this was easy to minimise the code. File is attached.
> It's still ~70 bars but only one voice, which is the dynamics staff of a
> piano score (without anything else), so it's only silent music.
>
> "AutoPageBreaksOff" in the score block causes the exception failure.
>
> I note some "insane spring distance" warnings.These don't happen in the
> real thing.
>
> Chris



Note: According to Phil H's own tests: "This started in 2.19.21.  2.19.20 is 
OK."

Update: an instance of this affects also non-Windows systems, see 
[comment](#b3ae) below.


---

Sent from sourceforge.net because [email protected] is 
subscribed to https://sourceforge.net/p/testlilyissues/issues/

To unsubscribe from further messages, a project admin can change settings at 
https://sourceforge.net/p/testlilyissues/admin/issues/options.  Or, if this is 
a mailing list, you can unsubscribe from the mailing list.
_______________________________________________
Testlilyissues-auto mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/testlilyissues-auto
  • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development
    • ... Auto mailings of changes to Lily Issues via Testlilyissues-auto via Automated messages for lilypond development

Reply via email to