bugRAPP - Raster Processing Primitives - Bugs: bug #32835, make all fails for sparc64 running...

 
 

bug #32835: make all fails for sparc64 running final tuning benchmark.

Submitter:  Hans-Peter Nilsson <hpataxis>
Submitted:  Fri 18 Mar 2011 03:42:24 PM UTC
   
 
Category:  None Severity:  5 - Blocker
Item Group:  None Status:  Fixed
Privacy:  Public Assigned to:  None
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

Wed 04 May 2011 03:38:15 AM UTC, comment #2: 

Fixed in 0.7

Hans-Peter Nilsson <hpataxis>
Group administrator
Fri 18 Mar 2011 06:28:46 PM UTC, comment #1: 

Last lines of "make all", for posterity (and it was apparently a SIGBUS, not a SIGSEGV):

...
rapp_rotate_ccw_bin                  full                 68.16M
rapp_stat_sum_bin                                          1.04G
rapp_stat_sum_u8                                         296.22M
rapp_stat_sum2_u8                                        ../bootstrap.sh: line 2:  5877 Bus error               LD_LIBRARY_PATH=. ./benchmark -m 100
rm -f benchmarkplot.html
python2.5 /home/hp/rapp-099ab774f3cd02fb37ddd1a7f8a56f9dd769df87/benchmark/plotdata.py
Usage: /home/hp/rapp-099ab774f3cd02fb37ddd1a7f8a56f9dd769df87/benchmark/plotdata.py [benchmark data file]
make[4]: * [benchmarkplot.html.stamp] Error 1

Hans-Peter Nilsson <hpataxis>
Group administrator
Fri 18 Mar 2011 03:42:24 PM UTC, original submission:  

The SEGV is because of storing at a misaligned uintmax_t *
(unsigned long long) for rapp_stat_sum2_u8.  The pointer is misaligned not because of misaligned pointers from malloc or rapp_malloc but because the "offset" calculated in rapp_bmark_setup is not a multiple of 8, in turn because rapp_alignment is 4.

Now, rapp_alignment is based on UINTPTR_MAX, not UINTMAX_MAX, which is as it should be (or rather, it should be their respective alignment).  It seems the best fix is to confess that we're juggling (cf. the aux handling in rapp_benchmark.c) with a type that requires larger alignment and just perform an extra alignment of "offset" manually. Similarly in rc_benchmark.c, which handles its padding and offset a bit differently and doesn't get misaligned, mostly "by chance".  The handling in rapp_test_stat.c is different; a local variable of the correct type is used and it doesn't have this issue.

I think this is a blocker because the same can happen on any other 32-bit platform that requires 64-bit alignment when storing a uintmax_t, not too weird.  (Oddly, the platform, running Debian, is identified as sparc64-unknown-linux-gnu, but the 32-bit ABI is used by default.  Using "-m64" enables the 64-bit ABI, but unfortunately this does not reflect in the "RAPP tuple").

Hans-Peter Nilsson <hpataxis>
Group administrator

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by hpataxis (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 2 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2012-03-15 hpataxis StatusConfirmed Fixed
    2011-05-04 hpataxis Open/ClosedOpen Closed

    Back to the top

    Powered by Savane 3.13-aa77.
    Corresponding source code