#2496 closed defect (fixed)
r.random.surface error from RAN C library
Reported by: | cmbarton | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | 7.0.7 |
Component: | Raster | Version: | svn-trunk |
Keywords: | r.random.surface | Cc: | |
CPU: | Unspecified | Platform: | MacOSX |
Description
We just encountered a weird bug in r.random.surface. So far, it seems to showing up on the Mac intermittently but not on Linux. The message is...
ERROR: RAN1: j==-67 shouldn't happen
It was generated from a Python script that called r.random.surface in the following way:
grass.run_command("r.random.surface", quiet = "True", output = tempimpactg, distance = grazespatial, exponent = grazepatchy, high = maxgrazeimpact)
I'm running on an oldish (ca. 5 years) iMac but with the latest OS X 10.9,x (no upgrade to 10.10 yet). This happens on both GRASS 7.0 beta3 and 7.1, both compiled 11 August 2014.
Attachments (1)
Change History (23)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
I don't know. But this bug causes our modeling script to crash so that we get no results.
follow-up: 7 comment:3 by , 10 years ago
That appears to be a conversion of this Fortran function.
That's supposed to generate uniform random numbers in the [0,1) interval, and so can be replaced by G_drand48().
follow-up: 5 comment:4 by , 10 years ago
If this is an easy fix, can someone let us know when it gets fixed? We need this for landscape modeling experiments we are trying to run.
thanks Michael
comment:5 by , 10 years ago
Replying to cmbarton:
If this is an easy fix, can someone let us know when it gets fixed? We need this for landscape modeling experiments we are trying to run.
It would be most welcome if somebody from your group would submit a patch which can be reviewed and eventually submitted.
comment:6 by , 10 years ago
Unfortunately, no one here is a C programmer. We do Python, Java, and other things. But not C. :-(
Otherwise we might have figured it out and fixed it already.
Michael
comment:7 by , 10 years ago
Replying to glynn:
so can be replaced by G_drand48().
Can someone test attachment:r.random.surface.patch ?
follow-up: 9 comment:8 by , 10 years ago
Is it updated in trunk or 7.1 dev? I can recompile and test.
Michael
comment:9 by , 10 years ago
Replying to cmbarton:
Is it updated in trunk or 7.1 dev? I can recompile and test.
Michael
Sorry. I see it is a patch. I will try with 7.0 and let you know.
Michael
comment:10 by , 10 years ago
This patch seems to fix the problem. I'll know for sure after our script repeated enough times. Most of the times, r.random.surface failed on the first or second time run. Once it did not fail until the 62nd iteration. I'm up to 65 iterations with no errors yet. So it looks good.
Michael
comment:12 by , 10 years ago
I tested this with trunk. While I can do the mechanics of submitting this later this week for 7.0 and trunk, I'm a little hesitant since I'm not familiar with C and don't know if this should be applied to other r.random.x modules or not.
Michael
comment:13 by , 10 years ago
Indeed, these files are 99% cloned:
- r.random.cells/gasdev.c
- r.random.surface/gasdev.c
and
- r.random.cells/random.c
- r.random.surface/random.c
follow-up: 15 comment:14 by , 10 years ago
So multiple patches are needed for different modules? Different for GRASS 7.0 and 7.1 or the same?
Michael
comment:15 by , 10 years ago
Replying to cmbarton:
So multiple patches are needed for different modules? Different for GRASS 7.0 and 7.1 or the same?
The same patch will work in 7.0 and 7.1.
comment:17 by , 9 years ago
Milestone: | 7.0.0 → 7.0.5 |
---|
comment:18 by , 8 years ago
Milestone: | 7.0.5 → 7.0.6 |
---|
comment:19 by , 7 years ago
Milestone: | 7.0.6 → 7.0.7 |
---|
comment:20 by , 6 years ago
We hit this unfixed bug again and while an error trap would help, we really just need to change the documentation it seems.
r.random.surface output=surf generates the error r.random.surface output=surf seed=0 (or seed=ANYTHING) does not generate an error, though seed<0 generates a warning r.random.surface output=surf seed=- does NOT generate an error
It comes from r.random.surface/random.c ran1 function, perhaps the new random functions could be used instead?
http://trac.osgeo.org/grass/browser/grass/trunk/lib/gis/lrand48.c
This applies also to r.random.cells. See also discussion here.