# Guard against assertion failure

## Details

• Type: Bug
• Status: Done
• Priority: Major
• Resolution: Done
• Fix Version/s: None
• Component/s:
• Labels:
None
• Templates:
• Story Points:
0.5
• Sprint:
DRP F16-3
• Team:
Data Release Production

## Description

measureCoaddSources can hit an assertion failure in GalSim:

 python: src/hsm/PSFCorr.cpp:731: void galsim::hsm::find_ellipmom_1(galsim::ConstImageView, double, double, double, double, double, double&, double&, double&, double&, double&, double&, double&, boost::shared_ptr): Assertion iy1 <= iy2' failed. 

This is due to GalSim using asserts rather than throwing an exception. We fixed this on the HSC side (7a73869), but it didn't come over because we're using GalSim as a dependency rather than sucking it into the package.

I thought I reported this upstream at one point...

## Activity

Hide
John Parejko added a comment -

Seems fine, though I'd like the exception to say something about what bounds (iy1, iy2 or what those mean higher up) and/or include the actual values. I see the debug statements above the throw, but it's nice for the exception message to be self contained.

Show
John Parejko added a comment - Seems fine, though I'd like the exception to say something about what bounds (iy1, iy2 or what those mean higher up) and/or include the actual values. I see the debug statements above the throw, but it's nice for the exception message to be self contained.
Hide
John Parejko added a comment -

Oh, wait. The assert is still there at the bottom: shouldn't the assert(iy1 <= iy2); line be removed, since it's already been handled by the except?

Show
John Parejko added a comment - Oh, wait. The assert is still there at the bottom: shouldn't the assert(iy1 <= iy2); line be removed, since it's already been handled by the except?
Hide
Paul Price added a comment -

Thanks John Parejko.

I would add more information to the exception, except that that's not done for any of the other exceptions in that file, and so I'm not sure what technique they would prefer for string formatting and I don't want to add any #include files just for this. If you insist I'll do something, but I think I would prefer to leave it.

I've removed the assert:

 pprice@tiger-sumire:~/LSST/external/galsim (tickets/DM-7114 %=) $git sub-patch commit 26dc8bf89928ae3b68dd7fb8c23271941511a4c6 Author: Paul Price  Date: Wed Aug 3 12:36:24 2016 -0400    replace assertion with exception    This is an exceptional condition that can occur sometimes  (because it certainly does occur!), rather than something  that should bring the world to a screaming halt.    Reported upstream as PR #784:  https://github.com/GalSim-developers/GalSim/pull/784   diff --git a/patches/DM-7114-assertion_to_exception.patch b/patches/DM-7114-assertion_to_exception.patch new file mode 100644 index 0000000..b64f1ff --- /dev/null +++ b/patches/DM-7114-assertion_to_exception.patch @@ -0,0 +1,15 @@ +diff --git a/src/hsm/PSFCorr.cpp b/src/hsm/PSFCorr.cpp +index a9b3260..21b92b1 100644 +--- a/src/hsm/PSFCorr.cpp ++++ b/src/hsm/PSFCorr.cpp +@@ -728,7 +728,9 @@ namespace hsm { + if (iy2 > ymax) iy2 = ymax; + dbg<<"y1,y2 = "< Show Paul Price added a comment - Thanks John Parejko . I would add more information to the exception, except that that's not done for any of the other exceptions in that file, and so I'm not sure what technique they would prefer for string formatting and I don't want to add any #include files just for this. If you insist I'll do something, but I think I would prefer to leave it. I've removed the assert : pprice@tiger-sumire:~/LSST/external/galsim (tickets/DM-7114 %=)$ git sub-patch commit 26dc8bf89928ae3b68dd7fb8c23271941511a4c6 Author: Paul Price <price@astro.princeton.edu> Date: Wed Aug 3 12:36:24 2016 -0400   replace assertion with exception This is an exceptional condition that can occur sometimes (because it certainly does occur!), rather than something that should bring the world to a screaming halt. Reported upstream as PR #784: https://github.com/GalSim-developers/GalSim/pull/784   diff --git a/patches/DM-7114-assertion_to_exception.patch b/patches/DM-7114-assertion_to_exception.patch new file mode 100644 index 0000000..b64f1ff --- /dev/null +++ b/patches/DM-7114-assertion_to_exception.patch @@ -0,0 +1,15 @@ +diff --git a/src/hsm/PSFCorr.cpp b/src/hsm/PSFCorr.cpp +index a9b3260..21b92b1 100644 +--- a/src/hsm/PSFCorr.cpp ++++ b/src/hsm/PSFCorr.cpp +@@ -728,7 +728,9 @@ namespace hsm { + if (iy2 > ymax) iy2 = ymax; + dbg<<"y1,y2 = "<<y1<<','<<y2<<std::endl; + dbg<<"iy1,iy2 = "<<iy1<<','<<iy2<<std::endl; +- assert(iy1 <= iy2); ++ if (iy1 > iy2) { ++ throw HSMError("Bounds don't make sense"); ++ } + + // + /* Use these pointers to speed up referencing arrays */
Hide
John Parejko added a comment -

Ok, if string formatting is a pain, can you at least have the message say what the bad bounds are? I don't know what iy1,iy2 mean here, but something like: "Vertical data bounds (iy1,iy2) don't make sense." would be better, I think.

Show
John Parejko added a comment - Ok, if string formatting is a pain, can you at least have the message say what the bad bounds are? I don't know what iy1,iy2 mean here, but something like: "Vertical data bounds (iy1,iy2) don't make sense." would be better, I think.
Hide
Paul Price added a comment -

Reworded the message, tested through Jenkins and merged to master.

Show
Paul Price added a comment - Reworded the message, tested through Jenkins and merged to master.

## People

• Assignee:
Paul Price
Reporter:
Paul Price
Reviewers:
John Parejko
Watchers:
John Parejko, Paul Price, Scott Daniel