Incorrect data in CDR field (Asterisk 12 and above)

Hi all, I’m using asterisk 13.11.2 with module and cdr fields retrieved via CDR() function.
Here’s my dialplan

exten => _X.,1,NoOp(${CDR(start)}) ; 1st verbose
exten => _X.,n,Playback(conf-usermenu-162)
exten => _X.,n,Dial(SIP/mydevice)
exten => _X.,n,NoOp(Nothing) ; postdial for fail disposition

exten => h,1,NoOp(${CDR(start)}) ; 2nd verbose with incorrect data
exten => h,n,Hangup()

with its behavior

  • 1st read, ${CDR(start)} return to me the correct value at the start of the call, before playing sound.
  • 2nd read, look like ${CDR(start)} is somehow modified, when entering the post-dial dialplan, then return to me the incorrect value at h extension, which exactly equals to the time when asterisk receive 486 from mydevice.

Without post-dial extension(s), CDR params collected in h extension are all correct, start at the start of the call.
Tested with same behavior on asterisk 12.6.0, 13.11.2, 14.6.0

Everything are fine with asterisk 11.25.1,
I’m not sure if this is a bug.

Any help would be appreciated.
Loi Dang