View Issue Details

IDProjectCategoryView StatusLast Update
0000356LDMud 3.3Runtimepublic2005-05-15 15:02
ReporterlarsAssigned Tolars 
PriorityhighSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Product Version3.3 
Fixed in Version3.3 
Summary0000356: 28 Bits for the large block size field aren't enough.
DescriptionOn Linux, using smalloc and pthreads means that core memory is allocated using malloc().

With a MIN_ALLOCED of 128 MByte, the malloc() sequence is
malloc(98460) -> 08236208
malloc(134217948) ->afd0b008
malloc(67109084) -> abcf8008

The driver, when trying to build the bridge block from 0x08236208 to 0xafd0b008 exceeds the range limit for the M_SIZE block.

Short term solution: don't use this combination.
TagsNo tags attached.

Activities

lars

2005-01-30 16:05

reporter   ~0000317

Possible solution: introduce a new flag 'M_HUGE': if it is set, it means that the size of the block is given in multiples of 64 Bytes (= 16 words). This allows to store blocksizes of up to 32 Bit in just 26 Bits (which would work fine for both smalloc and slaballoc). The limit would be blocksizes of 64KByte.

lars

2005-02-20 14:46

reporter   ~0000332

Corrected in 3.3.670 with the introduction of an additional size field; checked for and rejected in 3.2.

Issue History

Date Modified Username Field Change
2005-01-30 15:48 lars New Issue
2005-01-30 16:05 lars Note Added: 0000317
2005-02-20 14:46 lars Status new => resolved
2005-02-20 14:46 lars Fixed in Version => 3.3
2005-02-20 14:46 lars Resolution open => fixed
2005-02-20 14:46 lars Assigned To => lars
2005-02-20 14:46 lars Note Added: 0000332
2005-05-15 15:02 lars Status resolved => closed