精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

GreatSQL的sp中添加新的sp_instr引入的bug解析

數據庫 其他數據庫
在GreatSQL的sp添加新的sp_instr需要相應增加對應的參數值以防止內存溢出,如果其他的功能也要做類似的修改,也要先仔細調查一下有沒有涉及相關的參數配置或者宏定義,不然就會遇到各種莫名其妙的問題,調查起來也很花時間。

一、問題發現

在一次開發中用到的sp需要添加新的sp_instr以滿足需求,但是添加了數個sp_instr以后發現執行新的sp會發生core。

注:本次使用的GreatSQL 8.0.32-25

1、sp_head.cc的init_sp_psi_keys()代碼里面添加10個新的sp_instr:

void init_sp_psi_keys() {
  mysql_statement_register(category, &sp_instr_stmt1::psi_info, 1);
  mysql_statement_register(category, &sp_instr_stmt2::psi_info, 1);
  mysql_statement_register(category, &sp_instr_stmt3::psi_info, 1);
  ......
  mysql_statement_register(category, &sp_instr_stmt10::psi_info, 1);
}

2、sp_instr.cc里面添加新的sp_instr_stmt相關實現代碼,其中sql_yacc.yy和sql_lex.cc需要相應添加新的語法。

3、sp_rcontext.h處在·class sp_rcontext里面添加幾個新的成員變量。下面代碼只是示例,不具有實際使用價值。

Field *m_return_value_fld_tmp{m_return_value_fld};
  Field *m_return_value_fld_tmp1{m_return_value_fld};
  Field *m_return_value_fld_tmp2{m_return_value_fld};

4、創建新的sp,里面包含新的sp_instr_stmt的內容,然后call該sp,結果發現代碼邏輯處因為一個list里面member的值被清空了,然后導致crash。下面是相關的堆棧。因為涉及代碼機密,只截圖開源部分相關堆棧。

#0  0x0000555558f3f3d9 in base_list_iterator::next_fast (this=0x7fffe01e9de0)
    at /sql/sql_list.h:371
#1  0x0000555558fc59b7 in List_iterator_fast<Create_field>::operator++ (this=0x7fffe01e9de0)
    at /sql/sql_list.h:605
#2  0x0000555559753ea2 in create_tmp_table_from_fields (thd=0x7fff20001050, field_list=..., 
    is_virtual=false, select_options=0, alias=0x0)
    at /sql/sql_tmp_table.cc:2131
#3  0x0000555559084a09 in Item_xx::val_str (this=0x7fff20b673c8)
    at /sql/item_func.cc:10796
#4  0x0000555558fa408b in Item::save_in_field_inner (this=0x7fff20b673c8, field=0x7fff20b9b1a8, 
    no_conversions=false) at /sql/item.cc:8202
#5  0x0000555558fa3c43 in Item::save_in_field (this=0x7fff20b673c8, field=0x7fff20b9b1a8, 
    no_conversions=false) at /sql/item.cc:8144
#6  0x0000555559400322 in sp_eval_expr (thd=0x7fff20001050, result_field=0x7fff20b9b1a8, 
    expr_item_ptr=0x7fff20b67620) at /sql/sp.cc:3613
#7  0x000055555943b1d1 in sp_rcontext::set_variable (this=0x7fff20b85d80, thd=0x7fff20001050, 
    field=0x7fff20b9b1a8, value=0x7fff20b67620)
    at /sql/sp_rcontext.cc:1023
#8  0x0000555558fc3a8e in sp_rcontext::set_variable (this=0x7fff20b85d80, thd=0x7fff20001050, 
    var_idx=1, value=0x7fff20b67620)
    at /sql/sp_rcontext.h:176
打印crash處的信息,發現list里面的值被清空了。
(gdb) p tmp
$1 = (list_node *) 0x0

二、問題調查過程

1、仔細檢查代碼發現代碼邏輯沒有問題,list的值確實都有成功賦值,但是運行時候卻發現list被清空,顯然這是別的地方內存泄漏或者內存溢出導致list的元素空間被占用了或者被清空了。把sp的代碼換成別的,有時候會crash有時候不會crash,觸發機制也不明朗,不知道具體哪句代碼導致的內存泄漏。

2、于是回頭繼續看剛開始添加代碼的地方,猜想是不是跟我添加了10個sp_instr_stmt有關,因為相關的數組或者內存沒有添加擴容,很有可能因為這個導致內存溢出。

3、定位出疑似問題地方,就可以著手開始調查相關代碼了。查看相關添加sp_instr的代碼。

添加sp_instr實現代碼如下:
mysql_statement_register(category, &sp_instr_stmt1::psi_info, 1);

于是繼續往下面調查mysql_statement_register實現的代碼,
看到這里果然用到了statement_class_max:
PFS_statement_key register_statement_class(const char *name, uint name_length,
                                           PSI_statement_info *info) {
  /* See comments in register_mutex_class */
  uint32 index;
  PFS_statement_class *entry;

  REGISTER_CLASS_BODY_PART(index, statement_class_array, statement_class_max,
                           name, name_length)

接著查看statement_class_max的賦值的地方:
int init_statement_class(uint statement_class_sizing) {
  int result = 0;
  statement_class_dirty_count = statement_class_allocated_count = 0;
  statement_class_max = statement_class_sizing;

通過搜索代碼查到statement_class_sizing相關的參數配置的地方,
看到這里有一個SP_PSI_STATEMENT_INFO_COUNT宏定義,這個值跟sp_instr的數量有關。
static Sys_var_ulong Sys_pfs_max_statement_classes(
    "performance_schema_max_statement_classes",
    "Maximum number of statement instruments.",
    READ_ONLY GLOBAL_VAR(pfs_param.m_statement_class_sizing),
    CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 256),
    DEFAULT((ulong)SQLCOM_END + (ulong)COM_END + 5 +
            SP_PSI_STATEMENT_INFO_COUNT + CLONE_PSI_STATEMENT_COUNT),
    BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES);

繼續全文搜索,發現在sp_head.h定義了,這里的值為16,
數了一下現存的sp_instr個數剛好為16個,至此問題原因發現,
因為我加了10個sp_instr,而這個宏定義的值沒有跟著增加,導致內存溢出。
#define SP_PSI_STATEMENT_INFO_COUNT 16

三、問題解決方案

通過以上代碼解析后,就可以修改相關問題代碼,只要作如下修改即可。重新編譯完,問題解決。

sp_head.h修改SP_PSI_STATEMENT_INFO_COUNT宏定義(這里的26=16+10):
#define SP_PSI_STATEMENT_INFO_COUNT 26

因為增加了Sys_pfs_max_statement_classes的default值,
因此相關配置范圍也要跟著增加,因此把range相應加大。
static Sys_var_ulong Sys_pfs_max_statement_classes(
    "performance_schema_max_statement_classes",
    "Maximum number of statement instruments.",
    READ_ONLY GLOBAL_VAR(pfs_param.m_statement_class_sizing),
    CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, 256 * 2),
    DEFAULT((ulong)SQLCOM_END + (ulong)COM_END + 5 +
            SP_PSI_STATEMENT_INFO_COUNT + CLONE_PSI_STATEMENT_COUNT),
    BLOCK_SIZE(1), PFS_TRAILING_PROPERTIES);

四、問題總結

在GreatSQL的sp添加新的sp_instr需要相應增加對應的參數值以防止內存溢出,如果其他的功能也要做類似的修改,也要先仔細調查一下有沒有涉及相關的參數配置或者宏定義,不然就會遇到各種莫名其妙的問題,調查起來也很花時間。

這次發現的問題屬于新添加功能帶入的bug,在實際開發應用中類似的問題也要注意,一不小心就會踩坑。

上述問題在MySQL/Percona中同樣存在。

責任編輯:武曉燕 來源: GreatSQL社區
相關推薦

2023-07-05 08:21:24

MySQL函數sp

2024-04-03 08:33:31

MySQLCursorcursor

2017-08-09 08:56:04

SP存儲Android

2011-02-24 10:05:26

Visual Stud

2023-02-08 08:05:23

MySQLsp版本

2011-08-15 16:16:09

SQL Server存儲過程sp_MSforeac

2022-08-18 20:21:33

MySQLpreparebug

2010-07-01 17:08:26

2010-07-19 12:54:16

SQL Server安

2024-09-02 10:21:21

2010-01-28 09:13:49

Windows 7SP1SP2

2009-08-03 09:21:35

.NET 4.0 Be.NET

2009-08-27 09:46:30

Windows 7BugSP1

2009-12-01 14:04:17

VS2003 SP

2010-05-06 11:31:56

虛擬化

2023-03-16 08:01:43

CephWeb

2009-11-05 13:47:28

Visual Stud

2009-10-22 09:46:14

CCIE SP

2009-02-06 10:03:08

Vista SP1Vista SP2RC

2009-12-01 10:39:59

Visual Stud
點贊
收藏

51CTO技術棧公眾號

国产乱码精品一品二品| 亚洲黄页在线观看| 亚洲综合色噜噜狠狠| 国产超碰91| 亚洲黄色免费观看| 成人6969www免费视频| 欧美久久久久中文字幕| 天天操天天干天天玩| 搡老岳熟女国产熟妇| 久久久久国产精品一区二区| 日韩专区中文字幕| 亚洲日本久久久| 福利视频亚洲| 亚洲欧美一区二区不卡| 久久久久久国产精品免费免费| 自拍偷拍校园春色| 欧美特黄一级| 中文字幕欧美视频在线| 911亚洲精选| 国产福利91精品一区二区| 亚洲福利视频三区| 亚洲国产高清国产精品| 黑人乱码一区二区三区av| 日本欧美一区二区在线观看| 欧美激情在线一区| 国产亚洲精品精品精品| 成人影院中文字幕| 欧美剧在线免费观看网站 | 亚洲国产综合色| 日韩在线国产| 偷拍25位美女撒尿视频在线观看| 久久99国产精品麻豆| 91精品国产精品| 日本a级片视频| 久久国产精品成人免费观看的软件| 精品国产一区二区三区av性色| 在线观看免费污视频| 日本乱码一区二区三区不卡| 亚洲精品亚洲人成人网| 日韩在线电影一区| 嫩草在线播放| 99国产欧美另类久久久精品| 91九色对白| 亚洲天堂aaa| 石原莉奈在线亚洲二区| 68精品国产免费久久久久久婷婷| 黄色一级大片在线免费观看| 欧美女王vk| 日韩精品丝袜在线| 亚洲av无码专区在线播放中文| 91精品国产色综合久久不卡粉嫩| 欧美在线小视频| 国内外免费激情视频| 手机在线理论片| 亚洲1区2区3区4区| 男女猛烈激情xx00免费视频| 日本三级在线观看网站| 日韩一区中文字幕| 五月天男人天堂| 女女色综合影院| 17c精品麻豆一区二区免费| 婷婷四房综合激情五月| 天天干天天摸天天操| 成人美女在线视频| 国产精品三区在线| 日本黄色免费视频| 91丨九色丨国产丨porny| 久久久久久草| 成人高清网站| 欧美国产综合色视频| 亚洲精品白虎| 九七久久人人| 一区二区三区在线免费视频| 日韩在线视频在线| 影音先锋在线视频| 亚洲综合一区二区三区| 免费人成自慰网站| av影院在线免费观看| 福利一区视频在线观看| 91看片就是不一样| 日本欧美在线| 欧美大片日本大片免费观看| 污污免费在线观看| 亚洲国产欧美日韩在线观看第一区| 亚洲欧美日韩天堂一区二区| 永久免费毛片在线观看| 亚洲成av人片乱码色午夜| 欧美理论电影在线播放| 国产成人无码一区二区三区在线| 亚洲欧美视频| 国产精品一区二区在线| av中文在线观看| 99精品视频一区二区三区| 日本不卡二区| 麻豆av在线免费看| 性欧美大战久久久久久久久| 色婷婷综合久久久久中文字幕 | 91成人在线免费观看| 亚洲欧洲日本精品| 66精品视频在线观看| 亚洲欧美国产一本综合首页| 午夜精品一区二区三级视频| 136国产福利精品导航网址| 国产97在线|日韩| 国产免费不卡视频| 91欧美一区二区| 超碰成人在线免费观看| 毛片在线网站| 欧美高清视频不卡网| 男人的天堂影院| 日韩啪啪电影网| 国产69精品久久久| 中文字幕日本人妻久久久免费| 国产a视频精品免费观看| 视频二区一区| 性感女国产在线| 日韩一区二区免费电影| 男人的天堂官网| 国产日韩视频| 51国偷自产一区二区三区| 国产精品一级伦理| 欧美日韩裸体免费视频| 无码国产精品一区二区高潮| 精品国产一区二区三区四区| 久久青草福利网站| 精品人妻伦一二三区久久| 国产欧美视频一区二区| 久草资源站在线观看| 亚洲图色一区二区三区| 久久久国产一区| 波多野结衣毛片| 久久在线观看免费| 欧美一级免费播放| 中文字幕视频精品一区二区三区| 久久精品国产99国产精品澳门| 亚洲中文一区二区| 2017欧美狠狠色| 99精品在线免费视频| 97品白浆高清久久久久久| 久久精品国产久精国产一老狼| 精品成人av一区二区在线播放| 国产做a爰片久久毛片| 欧美在线3区| 999福利在线视频| 精品美女在线观看| 国产日韩欧美在线观看视频| 日本v片在线高清不卡在线观看| 国产精品久久久久秋霞鲁丝| 可以免费看毛片的网站| 亚洲嫩草精品久久| 免费一级特黄录像| 婷婷精品在线| 97视频在线观看视频免费视频| 国产哺乳奶水91在线播放| 国产精品三级电影| 99久久国产宗和精品1上映| 另类春色校园亚洲| 97视频在线观看视频免费视频| 国产av无码专区亚洲av| 依依成人精品视频| 国产精品熟女一区二区不卡| 国产韩日影视精品| 国产精品网红福利| 国产精品久久久久一区二区国产| 在线一区二区观看| 免费看污片的网站| 美女日韩在线中文字幕| 久久久久久亚洲精品不卡4k岛国| aa级大片免费在线观看| 精品国免费一区二区三区| 免费网站观看www在线观| 国产成人啪午夜精品网站男同| 欧美精品一区二区性色a+v| 99久久999| 在线播放国产精品| 国产人妻精品一区二区三| 亚洲视频资源在线| 色哟哟在线观看视频| 牛牛国产精品| 国产精品av一区| 毛片无码国产| 在线观看亚洲视频| 中文字幕一区二区人妻痴汉电车| 中文成人综合网| 午夜激情在线观看视频| 欧美/亚洲一区| 国产精品夜夜夜一区二区三区尤| 麻豆mv在线看| 亚洲一级一级97网| 一区二区视频播放| 亚洲二区在线视频| 在线免费观看日韩av| 日韩成人一级片| 中文字幕日韩一区二区三区不卡 | 日本在线视频站| 4438x亚洲最大成人网| 欧美成人综合色| 粉嫩嫩av羞羞动漫久久久| 精品少妇一区二区三区在线| 国产一区国产二区国产三区| 成人黄色中文字幕| 蜜臀av国内免费精品久久久夜夜| 亚洲国产精品专区久久| 久久精品99北条麻妃| 亚洲欧美二区三区| 国产精品成人99一区无码| 天堂在线一区二区| 色女孩综合网| 久久视频在线观看| 国产精品免费福利| 精品日韩av| 一本一道久久a久久精品逆3p| 国产又大又粗又长| 午夜精品久久一牛影视| 手机毛片在线观看| 成人在线综合网站| 日本在线观看免费视频| 国产亚洲成人一区| 裸体裸乳免费看| 亚洲免费福利一区| 51国偷自产一区二区三区| 厕沟全景美女厕沟精品| 久久免费少妇高潮久久精品99| 国产在线观看网站| 日韩精品一区二区三区视频播放 | 熟女少妇a性色生活片毛片| 麻豆成人在线观看| 欧美精品在欧美一区二区| 日本国产精品| 国产精品羞羞答答| 超碰在线99| 日韩在线视频线视频免费网站| 日本在线视频1区| 日韩一区二区在线观看视频播放| 极品国产91在线网站| 亚洲精品日日夜夜| 日韩av一二区| 本田岬高潮一区二区三区| 成人不卡免费视频| 狂野欧美一区| www.99热这里只有精品| 久久久精品久久久久久96| 日本欧美色综合网站免费| 国产图片一区| 亚洲影院色在线观看免费| 欧美日一区二区三区| 51视频国产精品一区二区| 伊人手机在线| xxxx性欧美| аⅴ资源新版在线天堂| 日韩国产精品一区| 日本私人网站在线观看| 亚洲第一色在线| 99热这里只有精品3| 欧美另类videos死尸| 天干夜夜爽爽日日日日| 色哟哟精品一区| 成人免费a视频| 精品成人在线视频| 日本三级片在线观看| 欧美日韩色婷婷| 日韩精品一区二区三区国语自制| 亚洲一区欧美一区| 久草资源在线视频| 中文字幕一区三区| 欧美黄色免费看| 一个色综合av| 久久精品第一页| 亚洲一区av在线| 精品人妻无码一区二区性色| 精品久久久国产精品999| 五月婷婷激情网| 精品福利一区二区| 日本熟妇毛茸茸丰满| 欧美性少妇18aaaa视频| 人妻丰满熟妇av无码区| 欧美性猛交xxxx黑人猛交| 国产精品久久久久久久久久久久久久久久久| 色久优优欧美色久优优| 波多野结衣二区三区| 欧美这里有精品| 一级做a爰片久久毛片16| 色婷婷精品大在线视频| 一级片在线观看视频| 欧美一区二区二区| 亚洲精品视频91| 亚洲娇小xxxx欧美娇小| 日本中文字幕在线观看| 理论片在线不卡免费观看| 色婷婷av在线| 8090成年在线看片午夜| 欧美大片免费高清观看| 国产精品网站视频| 韩国一区二区三区视频| 国产精品免费一区二区三区| 国产精品欧美大片| 亚洲午夜精品一区二区| 欧美日韩国产成人精品| 国产a级片网站| 琪琪一区二区三区| 北岛玲一区二区| 国产精品天天看| 久久久久久久黄色| 色综合久久中文字幕综合网| 国产浮力第一页| 亚洲精品视频二区| 毛片av在线| 国产91对白在线播放| 精品视频在线一区| 久久艳妇乳肉豪妇荡乳av| 色综合久久网| 日本国产在线播放| 国产99久久精品| 国产熟女一区二区| 亚洲自拍偷拍九九九| 亚洲s码欧洲m码国产av| 精品日韩99亚洲| 高清av在线| 久久久日本电影| 欧美一级二级视频| 国产欧美在线一区二区| 国产原创精品在线| 日欧美一区二区| 色哟哟免费视频| 亚洲情趣在线观看| 国产免费一区二区三区四区五区| 欧美一级理论片| 神马电影在线观看| 性色av一区二区咪爱| 在线观看欧美| 欧美国产二区| 亚洲最新av| 天堂在线资源视频| aa级大片欧美| 精国产品一区二区三区a片| 日韩欧美精品在线观看| www.国产黄色| 久久精品国产99国产精品澳门| 黄色激情在线播放| 国产精品自拍首页| 中文字幕日韩欧美精品高清在线| 亚洲男人天堂色| 国产精品一区二区三区网站| 91嫩草丨国产丨精品| 欧美性猛片aaaaaaa做受| 亚欧在线观看视频| 米奇精品一区二区三区在线观看| 国产成人毛片| 色99中文字幕| 久久久久久婷| 亚洲一区二区三区四区五区六区| 一区二区三区不卡视频| 国产精品福利电影| 色偷偷av一区二区三区| 美女精品久久| 亚洲一区二区三区四区中文| 日本成人在线不卡视频| 国产精品久久久久久成人| 在线一区二区视频| 韩国福利在线| 国产精品成人播放| 国产高清久久| 亚洲视频在线不卡| 亚洲视频在线观看一区| 97超碰资源站| 久久精品一本久久99精品| 伊人久久大香| 91社在线播放| 成人福利视频在线| 日韩欧美亚洲视频| 日韩av在线导航| 电影天堂国产精品| 日韩免费一区二区三区| 日本不卡免费在线视频| 高清国产在线观看| 欧美一三区三区四区免费在线看| 2020国产在线视频| av激情久久| 久久国产欧美| 亚洲激情图片网| 7777女厕盗摄久久久| 精精国产xxxx视频在线| 91精品啪aⅴ在线观看国产| 综合激情视频| 亚洲第一成肉网| 欧美日韩亚洲一区二| 福利成人在线观看| 国产欧美一区二区三区在线看| 红桃视频国产精品| 国产精品无码一区二区三| 色狠狠综合天天综合综合| 国产粉嫩一区二区三区在线观看| 91久久精品国产91久久| 欧美午夜影院| 日韩在线免费观看av| 7777精品伊人久久久大香线蕉的 | 中文字幕日韩精品久久| 国产在线日韩欧美| 久久精品视频国产| 亚洲精品小视频|