# latex gives me the error: Ouch---my internal constants have been clobbered

As the title states, compiling with latex produces the error, right away:

Ouch---my internal constants have been clobbered!---case 14


I have no idea what this means... I use TexLive 2012. I updated my texmf.cnf and ran fmtutil-sys and texhash. I guess texhash may have messed it up?

Any ideas?

As requested a minimal working example:

\documentclass{article}
\begin{document}
Any tex file.
\end{document}

• latex will not even start compiling. That's the problem. It doesn't matter what tex file... Aug 13 '12 at 20:53
• Delete all auxiliary files created from the previous run. See File extensions of LaTeX-related files or Deleting external/auxiliary files? for some ideas. Then try to rerun your example code.
– Werner
Aug 13 '12 at 20:58
• what did you do with your texmf.cnf? In general there is no need to modify that file. At least use a local one.
– user2478
Aug 13 '12 at 21:01
• I require quite a bit more memory for my compilations as I have large plots, animations and interactive components. These are very heavy during compilation. Aug 14 '12 at 20:34

The error message

Ouch---my internal constants have been clobbered!---case 14


is caused by

if (mem_min<min_halfword)or(mem_max>=max_halfword)or@|


in pdftex.web. Probably you have changed the memory settings in texmf.cnf that triggers the error. For further analysis these changes would be useful.

## Maximal main_memory

tex.ch changes the code lines above to:

if (mem_bot-sup_main_memory<min_halfword)or@|


Also it defines max_halfword as:

@d max_halfword==@"FFFFFFF {largest allowable value in a |halfword|}


That is 228-1 = 268,435,455. The value for sup_main_memory:

@!sup_main_memory = 256000000;


And mem_top is initialized as:

mem_top := mem_bot + main_memory -1;


Then the latest condition for triggering the error becomes:

mem_top + sup_mem_memorymax_half_word
main_memorymax_halfword - sup_main_memory + 1
main_memory ≥ 12,435,456

or main_memory must be smaller or equal than 12,435,455.

## Memory units

From tex.web:

@!mem : array[mem_min..mem_max] of memory_word; {the big dynamic storage area}
...
@!memory_word = record@;@/
case four_choices of
1: (@!int:integer);
2: (@!gr:glue_ratio);
3: (@!hh:two_halves);
4: (@!qqqq:four_quarters);
end;


The translation to bytes seems to be system dependent, from texmfmem.h my guess for memory_word are four or eight bytes.

• Indeed, I apparently had one too many zeros for the main_memory entry. Reread the config files. No more error! Thank you! Aug 13 '12 at 21:03
• Is there an easy way to find out the max_halfword? In the TeX sources I found a #define that set it to 1073741823 but this error occurs way before my main_memory variable reaches that value. May 17 '13 at 17:27
• @Christian I have updated the answer to add some calculation for main_memory. May 17 '13 at 18:14
• @HeikoOberdiek Oh that's great. This works indeed just so :) Just out of curiosity, are these bytes, words or what else? If it's bytes, that's awfully few :/ May 17 '13 at 19:19
• @Christian Answer updated with my guesses for the size of the memory units. May 17 '13 at 19:34