[mythtv-commits] Ticket #12535: Segmentation fault after starting livetv recording
MythTV
noreply at mythtv.org
Tue Nov 10 12:32:16 UTC 2015
#12535: Segmentation fault after starting livetv recording
-------------------------------------------------+-------------------------
Reporter: xenic@… | Owner:
| jyavenard
Type: Bug Report - General | Status:
| infoneeded_new
Priority: major | Milestone: 0.28
Component: MythTV - Recording | Version: 0.27.5
Severity: medium | Resolution:
Keywords: sigsegv segmentation fault segfault | Ticket locked: 0
record |
-------------------------------------------------+-------------------------
Comment (by xenic@…):
The problem (I think) is 'dec=31' which is invalid, the precision (dec
parameter) for my_useconds_to_str() in libmysqlclient should be 1 to 6.
From ''my_time.c''
{{{
/**
Print the microsecond part: ".NNN"
@param to OUT The string pointer to print at
@param useconds The microseconds value.
@param dec Precision, between 1 and 6.
@return The length of the result string.
*/
static inline int
my_useconds_to_str(char *to, ulong useconds, uint dec)
{
DBUG_ASSERT(dec <= DATETIME_MAX_DECIMALS);
return sprintf(to, ".%0*lu", dec,
useconds / (ulong) log_10_int[DATETIME_MAX_DECIMALS -
dec]);
}
}}}
DATETIME_MAX_DECIMALS is 6 as defined in ''my_time.h'' , so if the given
'dec' value is greater than 6, access to log_to_int[] ends up being
negative. The dec value is picked from 'field->decimals' which is a
MYSQL_FIELD, after that my skills in c fail me and I can't figure out
where the decimals value is actually coming from.
Either this is a mysql (libmysqlclient) bug or something funny is
happening in my database to return a dec value of 31?
--
Ticket URL: <https://code.mythtv.org/trac/ticket/12535#comment:5>
MythTV <http://www.mythtv.org>
MythTV Media Center
More information about the mythtv-commits
mailing list