When you double-click a Property (integer one), the viewer expands and unexpands the node. This causes the viewer to emit messages that it wants to read the tree, which is good. But every now and then, it sends a write message instead, setting the value to 1. I have double-clicked on Timeout, many times, and suddently I received a write-message

Breakpoint 1, telnet_submit_command_sync (command=0x1a16a0 "[port.8]\noutput.autosource.timeout=1\n", acknak=2) at telnet.c:422
422 int length = strlen (command);
(gdb) bt
#0 telnet_submit_command_sync (command=0x1a16a0 "[port.8]\noutput.autosource.timeout=1\n", acknak=2) at telnet.c:422
#1 0x00013f34 in AutoChange_Timeout_OnWrite (pValue=0x61ed0, state=0x11a5a8) at section-port.c:157
#2 0x000098d4 in onParameter (pParameter=0x61ec8, fields=GlowFieldFlag_Value, pPath=0x61e44, pathLength=6, state=0x1a1338) at client.c:200
#3 0x0002400c in onItemReady_ParameterContents (pThis=0x61e00) at ../externals/ember-plus/libember_slim/Source/glowrx.c:344
#4 0x00026a34 in onItemReady (pBase=0x61e00) at ../externals/ember-plus/libember_slim/Source/glowrx.c:1187
#5 0x00021398 in endContainer (pThis=0x61e00) at ../externals/ember-plus/libember_slim/Source/emberasyncreader.c:359
#6 0x00021650 in emberAsyncReader_readByte (pThis=0x61e00, b=1 '\001') at ../externals/ember-plus/libember_slim/Source/emberasyncreader.c:465
#7 0x000216b8 in emberAsyncReader_readBytes (pThis=0x61e00, pBytes=0x1a191b "\001(\206\001 S,", count=1) at ../externals/ember-plus/libember_slim/Source/emberasyncreader.c:474
#8 0x00026e60 in onPackageReceived (pPackage=0x1a18b9 "", length=99, state=0x61e00) at ../externals/ember-plus/libember_slim/Source/glowrx.c:1315
#9 0x00022414 in readFramedByte (pThis=0x61fc8, b=255 '\377') at ../externals/ember-plus/libember_slim/Source/emberframing.c:451
#10 0x00022600 in emberFramingReader_readBytes (pThis=0x61fc8, pBytes=0xbeffeffb "\377 S,\377\377\311\377\266\004", count=1) at ../externals/ember-plus/libember_slim/Source/emberframing.c:530
#11 0x00027038 in glowReader_readBytes (pThis=0x61e00, pBytes=0xbeffef94 "\376", count=104) at ../externals/ember-plus/libember_slim/Source/glowrx.c:1379
#12 0x00009ac4 in client_callback (data=0x1a1338, revents=1) at client.c:247
#13 0x0000b4f0 in main_loop_fd_iterate (timeout_ms=-1) at main-loop.c:193
#14 0x0000ad4c in main (argc=2, argv=0xbefff344) at main.c:229
(gdb) up
#1 0x00013f34 in AutoChange_Timeout_OnWrite (pValue=0x61ed0, state=0x11a5a8) at section-port.c:157
157 telnet_submit_command_sync (buffer, 2);
(gdb) up
#2 0x000098d4 in onParameter (pParameter=0x61ec8, fields=GlowFieldFlag_Value, pPath=0x61e44, pathLength=6, state=0x1a1338) at client.c:200
200 pCursor->onParameterWrite (&pParameter->value, pCursor->OnParameterWriteState);
(gdb) set print pretty
(gdb) p *pParameter
$1 = {
pIdentifier = 0x0,
pDescription = 0x0,
value = {
flag = GlowParameterType_Integer,
choice = {
integer = 1,
real = 4.9406564584124654e-324,
boolean = 1,
pString = 0x1 <Address 0x1 out of bounds>,
octets = {
pOctets = 0x1 <Address 0x1 out of bounds>,
length = 0
}
}
},
defaultValue = {
flag = GlowParameterType_None,
choice = {
integer = 0,
real = 0,
boolean = 0,
pString = 0x0,
octets = {
pOctets = 0x0,
length = 0
}
}
},
minimum = {
flag = GlowParameterType_None,
choice = {
integer = 0,
real = 0
}
},
maximum = {
flag = GlowParameterType_None,
choice = {
integer = 0,
real = 0
}
},
access = GlowAccess_None,
pFormat = 0x0,
factor = 0,
isOnline = 0,
step = 0,
type = GlowParameterType_None,
streamIdentifier = 0,
streamDescriptor = {
format = GlowStreamFormat_UnsignedInt8,
offset = 0
},
pFormula = 0x0,
pEnumeration = 0x0,
pSchemaIdentifiers = 0x0,
pTemplateReference = 0x0,
templateReferenceLength = 0
}
(gdb) l
195 send(sock, (char *)pBuffer, glowOutput_finishPackage(&output), 0);
196 freeMemory(pBuffer);
197 #else
198 if (pParameter->value.flag == pCursor->param.value.flag)
199 {
200* pCursor->onParameterWrite (&pParameter->value, pCursor->OnParameterWriteState);
201 } else {
202 fprintf (stderr, "onParameter, datatype missmatch: received flag = %d, local flag = %d\n", pParameter->value.flag, pCursor->param.value.flag);
203 }
204 #endif
(gdb) up
#3 0x0002400c in onItemReady_ParameterContents (pThis=0x61e00) at ../externals/ember-plus/libember_slim/Source/glowrx.c:344
344 pThis->onParameter(&pThis->glow.parameter, pThis->fields, pThis->path, pThis->pathLength, pThis->state);
(gdb) l
339 const BerTag *pTag = &pBase->tag;
340
341 if(pBase->isContainer)
342 {
343 if(pThis->onParameter != NULL)
344* pThis->onParameter(&pThis->glow.parameter, pThis->fields, pThis->path, pThis->pathLength, pThis->state);
345
346 // reset read parameter
347 glowParameter_free(&pThis->glow.parameter);
348 pThis->fields = GlowFieldFlag_None;
(gdb) p *pThis
$2 = {
base = {
base = {
tag = {
preamble = 128 '\200',
number = 1
},
length = 5,
type = 17,
isContainer = 1,
outerLength = 0,
buffer = {
pMemory = 0x198f60 "\001$\345\266\220\062\345\266\064;stderr\030",
size = 16,
position = 0,
isDynamic = 1
}
},
decodeState = DecodeState_Tag,
pContainerStack = 0x1b28c8,
pCurrentContainer = 0x1b29e8,
bytesRead = 0,
bytesExpected = 0,
onNewContainer = 0x26aec <onNewContainer>,
onItemReady = 0x269fc <onItemReady>
},
path = {0, 1, 108, 400, 2808, 3108, 0 <repeats 26 times>},
pathLength = 6,
glow = {
node = {
pIdentifier = 0x0,
pDescription = 0x0,
isRoot = 1,
isOnline = 0,
pSchemaIdentifiers = 0x1 <Address 0x1 out of bounds>,
pTemplateReference = 0x0,
templateReferenceLength = 0
},
parameter = {
pIdentifier = 0x0,
pDescription = 0x0,
value = {
flag = GlowParameterType_Integer,
choice = {
integer = 1,
real = 4.9406564584124654e-324,
boolean = 1,
pString = 0x1 <Address 0x1 out of bounds>,
octets = {
pOctets = 0x1 <Address 0x1 out of bounds>,
length = 0
}
}
},
defaultValue = {
flag = GlowParameterType_None,
choice = {
integer = 0,
real = 0,
boolean = 0,
pString = 0x0,
octets = {
pOctets = 0x0,
length = 0
}
}
},
minimum = {
flag = GlowParameterType_None,
choice = {
integer = 0,
real = 0
}
},
maximum = {
flag = GlowParameterType_None,
choice = {
integer = 0,
real = 0
}
},
access = GlowAccess_None,
pFormat = 0x0,
factor = 0,
isOnline = 0,
step = 0,
type = GlowParameterType_None,
streamIdentifier = 0,
streamDescriptor = {
format = GlowStreamFormat_UnsignedInt8,
offset = 0
},
pFormula = 0x0,
pEnumeration = 0x0,
pSchemaIdentifiers = 0x0,
pTemplateReference = 0x0,
templateReferenceLength = 0
},
command = {
number = 0,
options = {
dirFieldMask = GlowFieldFlag_Identifier,
invocation = {
invocationId = 1,
pArguments = 0x0,
argumentsLength = 1
}
}
},
streamEntry = {
streamIdentifier = 0,
streamValue = {
flag = GlowParameterType_Integer,
choice = {
integer = 1,
real = 4.9406564584124654e-324,
boolean = 1,
pString = 0x1 <Address 0x1 out of bounds>,
octets = {
pOctets = 0x1 <Address 0x1 out of bounds>,
length = 0
}
}
}
},
matrix = {
pIdentifier = 0x0,
pDescription = 0x0,
type = GlowMatrixType_OneToOne,
addressingMode = GlowMatrixAddressingMode_Linear,
targetCount = 1,
sourceCount = 0,
maximumTotalConnects = 0,
maximumConnectsPerTarget = 0,
parametersLocation = {
kind = GlowParametersLocationKind_BasePath,
choice = {
basePath = {
ids = {0 <repeats 32 times>},
length = 0
},
inlineId = 0
}
},
pLabels = 0x0,
labelsLength = 0,
pSchemaIdentifiers = 0x0,
pTemplateReference = 0x0,
templateReferenceLength = 0
},
signal = {
number = 0
},
connection = {
target = 0,
pSources = 0x0,
sourcesLength = 1,
operation = GlowConnectionOperation_Absolute,
disposition = GlowConnectionDisposition_Modified
},
function = {
pIdentifier = 0x0,
pDescription = 0x0,
pArguments = 0x1,
argumentsLength = 0,
pResult = 0x1,
resultLength = 0,
pTemplateReference = 0x0,
templateReferenceLength = 0
},
invocationResult = {
invocationId = 0,
hasError = 0,
pResult = 0x1,
resultLength = 0
},
template_ = {
pDescription = 0x0,
state = 0
}
},
fields = GlowFieldFlag_Value,
onItemReadyState = 0x23f6c <onItemReady_ParameterContents>,
onTemplate = 0,
onNode = 0,
onParameter = 0x982c <onParameter>,
onCommand = 0x9368 <onCommand>,
onStreamEntry = 0,
onMatrix = 0,
onTarget = 0,
onSource = 0,
onConnection = 0,
onFunction = 0,
onInvocationResult = 0,
onUnsupportedTltlv = 0,
state = 0x1a1338
}