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

 
 

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

Submitted by:  Hans-Peter Nilsson <hpataxis>
Submitted on:  Fri 18 Mar 2011 03:42:24 PM UTC  
 
Category: NoneSeverity: 5 - Blocker
Item Group: NoneStatus: Fixed
Privacy: PublicAssigned to: None
Open/Closed: Closed

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

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

Fixed in 0.7

Hans-Peter Nilsson <hpataxis>
Project 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>
Project 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>
Project Administrator

 

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

Attach File(s):
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

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

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 2 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Thu 15 Mar 2012 02:26:45 PM UTChpataxisStatusConfirmed=>Fixed
    Wed 04 May 2011 03:38:15 AM UTChpataxisOpen/ClosedOpen=>Closed

    Back to the top


    Powered by Savane 3.1-cleanup1