Crash when planning CCR dive

Robert C. Helling helling at atdotde.de
Mon Dec 15 00:25:18 PST 2014


Paul,

unless I hear otherwise I would currently assume this issue is there for your binary/your build only. Could you make sure you are indeed building the latest master and nothing else? Perhaps do a make distclean and git reset —hard origin/master first and then start again with make.

> On 14.12.2014, at 15:39, Paul Sargent <paul.lionseye at icloud.com> wrote:
> 
> This is on the current head (9fe458ea2e30), running on Mac OS 10.10.1.
> 
> What I did was:
> 
> # make clean
> # qmake INCLUDEPATH+="/usr/local/include /usr/local/Cellar/sqlite/3.8.7.1/include" LIBS+="-L/usr/local/Cellar/sqlite/3.8.7.1/lib -L/usr/local/lib" -config debug
> # make
> # open Subsurface.app

BTW, in my Mac build directories, I created a soft link subsurface -> Subsurface.app/Contents/MacOS/Subsurface so I can run the binary as

./subsurface

which gives me STDOUT/STDERR on the terminal (which opening the Subsurface.app doesn’t). The disadvantage is that this runs it without an icon and the window opens in the back rather than in the front.

> Attaching the debugger gave:
> 
> * thread #1: tid = 0x7eef0, 0x00000001084e41c3 subsurface`fill_missing_tank_pressures(dive=0x00038a4008774e80, pi=0x00007fff5774eef8, track_pr=0x00007fff5774ec20, o2_flag=false) + 675 at gaspressures.c:301, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
>     frame #0: 0x00000001084e41c3 subsurface`fill_missing_tank_pressures(dive=0x00038a4008774e80, pi=0x00007fff5774eef8, track_pr=0x00007fff5774ec20, o2_flag=false) + 675 at gaspressures.c:301
>    298
>    299 			// If there is a valid segment but no tank pressure ..
>    300 			interpolate = get_pr_interpolate_data(segment, pi, i, pressure); // Set up an interpolation structure
> -> 301 			if(dive->cylinder[cyl].cylinder_use == OC_GAS) {
>    302
>    303 				/* if this segment has pressure_time, then calculate a new interpolated pressure */
>    304 				if (interpolate.pressure_time) {
> 
> (lldb) p cyl
> (int) $0 = -1


Hmm, unless this is originating from uninitialized memory, a cylinder number -1 could only come from dive->oxygen_cylinder_index (or the corresponding function get_cylinder_idx_by_use() if no oxygen cylinder is defined. In the place you quote, however, since commit 13934b0f this should have been caught a few lines above. Are you sure you have that commit?

Best
Robert


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20141215/53a4d69a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 495 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20141215/53a4d69a/attachment.sig>


More information about the subsurface mailing list