Code review - Issue 1624002: Add flags to control the amount of information written to Linux minidump fileshttps://breakpad.appspot.com/2015-03-16T21:50:35+00:00rietveld
Message from unknown
2014-04-21T22:59:39+00:00Pedro Navarrourn:md5:ac1a76f6e14a3bd079214d6245051c40
Message from pnavarro@netflix.com
2014-04-21T23:11:18+00:00Pedro Navarrourn:md5:cc7ad0eccfc8500759fa744940321979
This patch lets the user control what gets written to the minidump file and if the stack size limiter should be unconditionally enabled or not. The default values are to do exactly what it was done without the patch applied, so there are no behavior changes.
Message from thestig@chromium.org
2014-04-23T21:03:31+00:00Lei Zhang (chromium)urn:md5:88f38e9b5d150d7b4b115a3134f15133
Generally look ok here. Ted, do you have high level comments?
Message from ted.mielczarek@gmail.com
2014-04-23T23:38:00+00:00Ted Mielczarekurn:md5:2fe5ef6de89544ad980c6b043d492762
Concept looks good, just have a few qualms about the layout of things.
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/exception_handler.h
File src/client/linux/handler/exception_handler.h (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/exception_handler.h#newcode169
src/client/linux/handler/exception_handler.h:169: const ContentFlags = DUMP_ALL);
Seems like we'd want a way to specify this when instantiating an ExceptionHandler as well, or at least a method to set/get the flags. On Windows you can pass MINIDUMP_TYPE down via the constructor:
https://code.google.com/p/google-breakpad/source/browse/trunk/src/client/windows/handler/exception_handler.h#189
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/minidump_descriptor.h
File src/client/linux/handler/minidump_descriptor.h (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/minidump_descriptor.h#newcode52
src/client/linux/handler/minidump_descriptor.h:52: explicit MinidumpDescriptor(const string& directory, ContentFlags flags = ContentFlags(-1))
I don't understand why this lives on the MinidumpDescriptor, it seems like it ought to live on the ExceptionHandler instead.
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/minidump_writer/minidump_writer_unittest.cc
File src/client/linux/minidump_writer/minidump_writer_unittest.cc (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/minidump_writer/minidump_writer_unittest.cc#newcode86
src/client/linux/minidump_writer/minidump_writer_unittest.cc:86: ContentFlags flags = DUMP_ALL;
You probably want to add some tests here for other variations of ContentFlags.
Message from pnavarro@netflix.com
2014-04-24T01:40:36+00:00Pedro Navarrourn:md5:d5eaab35f56f2d00e477a5d32dbc3dd9
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/exception_handler.h
File src/client/linux/handler/exception_handler.h (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/exception_handler.h#newcode169
src/client/linux/handler/exception_handler.h:169: const ContentFlags = DUMP_ALL);
Would that be preferred to setting the flags through the MinidumpDescriptor? I tried to follow the existing model and when I saw explicit path/fd I added flags and when I saw that a MinidumpDescriptor was used I didn't (as the flags are available through it)
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/minidump_descriptor.h
File src/client/linux/handler/minidump_descriptor.h (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/minidump_descriptor.h#newcode52
src/client/linux/handler/minidump_descriptor.h:52: explicit MinidumpDescriptor(const string& directory, ContentFlags flags = ContentFlags(-1))
I thought it made more sense for the content flags to live in MinidumpDescriptor as that's the class that controls the minidump's file properties, such as location or size limit.
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/minidump_writer/minidump_writer_unittest.cc
File src/client/linux/minidump_writer/minidump_writer_unittest.cc (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/minidump_writer/minidump_writer_unittest.cc#newcode86
src/client/linux/minidump_writer/minidump_writer_unittest.cc:86: ContentFlags flags = DUMP_ALL;
Agreed
Message from ted.mielczarek@gmail.com
2014-04-24T10:48:26+00:00Ted Mielczarekurn:md5:1db99f13e2760fa587777404f38ce985
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/exception_handler.h
File src/client/linux/handler/exception_handler.h (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/exception_handler.h#newcode169
src/client/linux/handler/exception_handler.h:169: const ContentFlags = DUMP_ALL);
I wrote that before I realized what you were doing there. Yes, I think that makes more sense.
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/minidump_descriptor.h
File src/client/linux/handler/minidump_descriptor.h (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/minidump_descriptor.h#newcode52
src/client/linux/handler/minidump_descriptor.h:52: explicit MinidumpDescriptor(const string& directory, ContentFlags flags = ContentFlags(-1))
It feels a little weird to me. I can understand why you might go this route, but I think it'd be clearer to simply put it on the ExceptionHandler instead.
Message from pnavarro@netflix.com
2014-04-24T18:57:43+00:00Pedro Navarrourn:md5:3aae202babc1ec358c9f0f6c4fcd272a
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/minidump_descriptor.h
File src/client/linux/handler/minidump_descriptor.h (right):
https://breakpad.appspot.com/1624002/diff/1/src/client/linux/handler/minidump_descriptor.h#newcode52
src/client/linux/handler/minidump_descriptor.h:52: explicit MinidumpDescriptor(const string& directory, ContentFlags flags = ContentFlags(-1))
No problem. My first implementation was just as you mention, but later I thought it was a cleaner approach to put them into the MinidumpDescriptor class. I'll go back to that behavrior to be more inline with what the Windows port does.
Message from unknown
2014-04-29T03:31:41+00:00Pedro Navarrourn:md5:b3edc56cec92f4e27d2ee89ecc8659bf
Message from pnavarro@netflix.com
2014-04-29T03:35:50+00:00Pedro Navarrourn:md5:bfa2cac6e4c2c3e35cf3fcf80ea6c2b7
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer_unittest.cc
File src/client/linux/minidump_writer/minidump_writer_unittest.cc (right):
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer_unittest.cc#newcode695
src/client/linux/minidump_writer/minidump_writer_unittest.cc:695: ASSERT_LE(normal_file_size, st.st_size);
Sometimes, even without my patch applied, the minidump-writer-unittest-same.dmp file is 8 bytes bigger than the reference. I haven't found a way to constantly reproduce.
Message from pnavarro@netflix.com
2014-05-09T00:49:01+00:00Pedro Navarrourn:md5:6596fbff506417d538c0e3b2cb8ab051
Any news on the patch?
Message from thestig@chromium.org
2014-05-14T00:45:45+00:00Lei Zhang (chromium)urn:md5:c29bf2eaf56ec0172941db09f2b288c1
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/handler/exception_handler.h
File src/client/linux/handler/exception_handler.h (right):
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/handler/exception_handler.h#newcode136
src/client/linux/handler/exception_handler.h:136: ContentFlags flags = DUMP_ALL);
I realize this is a pain, but Google C++ style guide prefers not to have default arguments. http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Default_Arguments#Default_Arguments
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer.cc
File src/client/linux/minidump_writer/minidump_writer.cc (right):
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer.cc#newcode520
src/client/linux/minidump_writer/minidump_writer.cc:520:
style: no random blank lines at the beginning/ending of functions.
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer.cc#newcode543
src/client/linux/minidump_writer/minidump_writer.cc:543: if (!WriteThreadListStream(&dirent))
style: 2 space indents, here and below
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer.h
File src/client/linux/minidump_writer/minidump_writer.h (left):
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer.h#oldcode87
src/client/linux/minidump_writer/minidump_writer.h:87: // Returns true iff successful.
"iff" is not a typo, it's a short-hand for "if and only if"
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer.h
File src/client/linux/minidump_writer/minidump_writer.h (right):
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer.h#newcode57
src/client/linux/minidump_writer/minidump_writer.h:57: DUMP_LIMIT_STACK_SIZE = (1 << 2), // Limit the stack size
You'll need to elaborate a bit more on this one.
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer_unittest.cc
File src/client/linux/minidump_writer/minidump_writer_unittest.cc (right):
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer_unittest.cc#newcode89
src/client/linux/minidump_writer/minidump_writer_unittest.cc:89: ASSERT_TRUE(WriteMinidump(templ.c_str(), child, &context, sizeof(context), flags));
Style - 80 char max please. Same on line 557 and in other files. If you are using gcl to upload patches, you can run "gcl lint CLNAME" to find lint errors.
https://breakpad.appspot.com/1624002/diff/130002/src/client/linux/minidump_writer/minidump_writer_unittest.cc#newcode695
src/client/linux/minidump_writer/minidump_writer_unittest.cc:695: ASSERT_LE(normal_file_size, st.st_size);
On 2014/04/29 03:35:50, Pedro Navarro wrote:
> Sometimes, even without my patch applied, the minidump-writer-unittest-same.dmp
> file is 8 bytes bigger than the reference. I haven't found a way to constantly
> reproduce.
Maybe try to copy the dump file out of temp_dir so you can examine it later?
Message from unknown
2014-11-05T20:53:06+00:00Pedro Navarrourn:md5:aac928b1825ae6d889814294b53265ac
Message from pnavarro@netflix.com
2014-11-05T20:58:34+00:00Pedro Navarrourn:md5:89f2a539fb88f9f90b35bab316af35de
Finally got some time to work on this again! I updated the patch to build against the latest code and addressed all issues that came up during the last review by Lei. I have also added a way to set the maximum thread stack size that gets written to the minidump when limiting its size (instead of the hardcoded 2kb default) and added the corresponding unit tests.
Message from pnavarro@netflix.com
2014-11-24T21:57:32+00:00Pedro Navarrourn:md5:c29fbda32b29d00f3ceaa3450c889a78
Can I get somebody to take a look? We are now using the patch but would like to get some of the breakpad pros to take a look.
Message from pnavarro@netflix.com
2015-01-09T00:36:00+00:00Pedro Navarrourn:md5:ed0c99416b47fe4f37908a7f35e57142
Breakpad team, can somebody review my patch? We would like to ship our product and ask our partners to get the official breakpad release instead of our own. Thanks!
Message from casinobong88@gmail.com
2015-01-20T23:34:52+00:00casinobong88urn:md5:37608819dbad5c378ca277be526a85c4
https://smart.b88ag.com/MemberInfo/DownlineList.aspx
Message from casinobong88@gmail.com
2015-01-20T23:35:20+00:00casinobong88urn:md5:44eb6de67977f7784c940a25a9ab0072
On 2015/01/20 23:34:52, casinobong88 wrote:
> https://smart.b88ag.com/MemberInfo/DownlineList.aspx
https://smart.b88ag.com/MemberInfo/DownlineList.aspx
Message from casinobong88@gmail.com
2015-01-20T23:37:28+00:00casinobong88urn:md5:79eb03c1b08c463ef55a31f1a2f0bcbc
On 2015/01/09 00:36:00, Pedro Navarro wrote:
> <font><font>Đội Breakpad, ai đó có thể xem lại bản vá của tôi? </font><font>Chúng tôi muốn gửi sản phẩm của chúng tôi</font></font><font></font><font><font>
> và yêu cầu các đối tác của chúng tôi để có được phát hành chính thức breakpad thay vì của chính chúng ta.</font></font><font></font><font><font>
> Cảm ơn!</font></font>
https://mb.b88ag.com/(S(ytvp5fvrggb5rjagpzsdnp42))/index.aspx
Message from casinobong88@gmail.com
2015-01-20T23:38:16+00:00casinobong88urn:md5:5e21797caaab0e879bcb73f8044072d3
On 2015/01/20 23:37:28, casinobong88 wrote:
> <font><font>Ngày 2015/01/09 00:36:00, Pedro Navarro đã viết:</font></font><font></font><font><font>
> > <Font> <font> Đội Breakpad, ai That thể xem lại bản vá của tôi Diễn đàn?</font></font><font></font><font><font>
> </ Font> <font> We wish gửi sản phẩm của their</font></font><font></font><font><font>
> Tôi </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > And ask of argument tác of we have to be phát hành chính thức breakpad</font></font><font></font><font><font>
> instead of our chính </ font> </ font>. <font> </ font> <font> <font></font></font><font></font><font><font>
> > Cảm ơn! </ Font> </ font></font></font><font></font>
> https://mb.b88ag.com/%28S%28ytvp5fvrggb5rjagpzsdnp42%29%29/index.aspx
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title></title><link href="/_GlobalResources/Css/Agent.css?20141230" rel="stylesheet" type="text/css" /><link href="/_Reports/PortalPage/Resources/PortalPage.css?20141230" rel="Stylesheet" type="text/css" /></head><body><div><table class="tblMain" cellspacing="0"><tr><td valign="top" style="width: 50%"><div id="balanceInfo" class="padding-right"></div></td><td valign="top" style="width: 50%"><div id="statistic" class="padding-right"></div></td></tr><tr><td colspan="2" valign="top"><div id="announcement" class="padding-top-right"></div></td></tr></table></div><script src="/_GlobalResources/Js/Core.js?20141230" type="text/javascript"></script><script src="/_Components/AGEWnd/AGEWnd.js?20141230" type="text/javascript"></script><script src="/_Components/Paging/Paging.js?20141230" type="text/javascript"></script><script src="/_Reports/PortalPage/Resources/PortalPage.js?20141230" type="text/javascript"></script></body></html><script type="text/javascript">var _page = {'key':'0cZoQYuB/DDhEw0CNKuvNg==','RemoveOnlineList':true,'more':'More...'};</script>
Message from casinobong88@gmail.com
2015-01-21T00:05:43+00:00casinobong88urn:md5:edebbfa946203f0d332b5dd08ad0166d
On 2015/01/20 23:38:16, casinobong88 wrote:
> <font><font>Ngày 2015/01/20 23:37:28, casinobong88 đã viết:</font></font><font></font><font><font>
> > <Font> <font> Ngày 2015/01/09 00:36:00, Pedro Navarro have</font></font><font></font><font><font>
> viết: </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> >> <Font> <font> Đội Breakpad, ai đó thể xem lại bản vá của tôi Diễn đàn Diễn</font></font><font></font><font><font>
> đàn? </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > </ Font> <font> Chúng tôi muốn gửi sản phẩm của</font></font><font></font><font><font>
> họ </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Tôi </ font> </ font> <font> </ font> <font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> >> Và yêu cầu của các đối số tác của chúng ta phải được phát hành chính thức</font></font><font></font><font><font>
> breakpad </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Thay vì chính chúng tôi </ font> </ font>. </font><font><Font> </ font> <font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> >> Cảm ơn! </font><font></ Font> </ font> </ font> </ font> <font> </ font></font></font><font></font><font><font>
> > </font></font>https://mb.b88ag.com/%2528S%2528ytvp5fvrggb5rjagpzsdnp42%2529%2529/index.aspx<font></font><font><font>
> <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN"</font></font><font></font><font><font>
> "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html</font></font><font></font><font><font>
> xmlns = "http://www.w3.org/1999/xhtml"> <head> <title> </ title> <link</font></font><font></font><font><font>
> href = "/ _ GlobalResources / Css / Agent.css? 20141230" rel = "stylesheet" type = "text / css"</font></font><font></font><font><font>
> /> <Link href = "/ _ Reports / PortalPage / Resources / PortalPage.css? 20141230"</font></font><font></font><font><font>
> rel = "stylesheet" type = "text / css" class /> </ head> <body> <div> <table = "tblMain"</font></font><font></font><font><font>
> cellspacing = "0"> <tr> <td valign = "top" style = "width: 50%"> <div id = "balanceInfo"</font></font><font></font><font><font>
> class = "padding-right"> </ div> </ td> <td valign = "top" style = "width: 50%"> <div</font></font><font></font><font><font>
> id = "Thống kê" class = "padding-right"> </ div> </ td> </ tr> <tr> <td colspan = "2"</font></font><font></font><font><font>
> valign = "top"> <div id = "Thông báo"</font></font><font></font><font><font>
> class = "padding-top-right"> </ div> </ td> </ tr> </ table> </ div> <script</font></font><font></font><font><font>
> src = "/ _ GlobalResources / Js / Core.js? 20141230"</font></font><font></font><font><font>
> type = "text / javascript"> </ script> <script</font></font><font></font><font><font>
> src = "/ _ Linh kiện / AGEWnd / AGEWnd.js? 20141230"</font></font><font></font><font><font>
> type = "text / javascript"> </ script> <script</font></font><font></font><font><font>
> src = "/ _ Linh kiện / Paging / Paging.js? 20141230"</font></font><font></font><font><font>
> type = "text / javascript"> </ script> <script</font></font><font></font><font><font>
> src = "/ _ Reports / PortalPage / Resources / PortalPage.js? 20141230"</font></font><font></font><font><font>
> type = "text / javascript"> </ script> </ body> </ html> <script type = "text / javascript"> var</font></font><font></font><font><font>
> _page =</font></font><font></font><font><font>
> {'Chìa khóa': '0cZoQYuB / DDhEw0CNKuvNg ==', 'RemoveOnlineList': true, 'nhiều hơn': 'Nhiều hơn ...'}; </ script></font></font>
https://mb.b88ag.com/(S(yy3b2annsq2ya3t5ekumptdk))/index.aspx
Message from casinobong88@gmail.com
2015-01-21T00:09:03+00:00casinobong88urn:md5:b66bd6e631d3742cebe60966d8d2c18a
On 2015/01/21 00:05:43, casinobong88 wrote:
> <font><font>Ngày 2015/01/20 23:38:16, casinobong88 đã viết:</font></font><font></font><font><font>
> > <Font> <font> Ngày 2015/01/20 23:37:28, casinobong88 have</font></font><font></font><font><font>
> viết: </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> >> <Font> <font> Ngày 2015/01/09 00:36:00, Pedro Navarro</font></font><font></font><font><font>
> có </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Viết: </ font> </ font> <font> </ font> <font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > >> <Font> <font> Đội Breakpad, ai which thể xem lại bản vá của tôi Diễn đàn Diễn đàn</font></font><font></font><font><font>
> Diễn </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Đàn? </font><font></ Font> </ font> <font> </ font> <font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> >> </ Font> <font> We wish gửi sản phẩm</font></font><font></font><font><font>
> of </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > They </ font> </ font> <font> </ font> <font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> >> Tôi </ font> </ font> <font> </ font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > <Font> </ font> </ font> <font> </ font> <font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > >> VA yêu cầu of arguments tác of us to be phát hành chính</font></font><font></font><font><font>
> thức </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Breakpad </ font> </ font> <font> </ font> <font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> >> Thầy since chính we </ font> </ font>. </font><font></ Font> <font> <font> </ font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > <Font> </ font> </ font> <font> </ font> <font></font></font><font></font><font><font>
> <Font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > >> Cảm ơn! </font><font></ Font> <font> </ font> </ font> </ font> </ font> <font> </</font></font><font></font><font><font>
> font> </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> >></font></font><font></font><font><font>
> </font></font>https://mb.b88ag.com/%2528S%2528ytvp5fvrggb5rjagpzsdnp42%2529%2529/index.aspx<font></font><font><font></font></font><font></font><font><font>
> > <! </font><font>DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional //</font></font><font></font><font><font>
> EN "</ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> ></font></font><font></font><font><font>
> "Http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html</font></font><font></font><font><font></font></font><font></font><font><font>
> > Xmlns = "http://www.w3.org/1999/xhtml"> <head> <title> </ title></font></font><font></font><font><font>
> <Link </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Href = "/ _ GlobalResources / Css / Agent.css? 20141230" rel = "stylesheet"</font></font><font></font><font><font>
> type = "text / css" </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > /> <Liên kết href = "/ _ Reports / PortalPage / Resources / PortalPage.css?</font></font><font></font><font><font>
> 20141230 "</ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Rel = "stylesheet" type = "text / css" class /> </ head> <body> <div> <table =</font></font><font></font><font><font>
> "TblMain" </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Cellspacing = "0"> <tr> <td valign = "top" style = "width: 50%"> <div id =</font></font><font></font><font><font>
> "BalanceInfo" </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Class = "padding-right"> </ div> </ td> <td valign = "top" style = "width:</font></font><font></font><font><font>
> 50% "> <div </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Id = "Thống kê" class = "padding-right"> </ div> </ td> </ tr> <tr> <td</font></font><font></font><font><font>
> colspan = "2" </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Valign = "top"> <div id = "Thông báo" </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Class = "padding-top-right"> </ div> </ td> </ tr> </ table> </ div></font></font><font></font><font><font>
> <Script </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Src = "/ _ GlobalResources / Js / Core.js?</font></font><font></font><font><font>
> 20141230 "</ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Type = "text / javascript"> </ script></font></font><font></font><font><font>
> <Script </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Src = "/ _ Linh kiện / AGEWnd / AGEWnd.js?</font></font><font></font><font><font>
> 20141230 "</ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Type = "text / javascript"> </ script></font></font><font></font><font><font>
> <Script </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Src = "/ _ Linh kiện / Paging / Paging.js?</font></font><font></font><font><font>
> 20141230 "</ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Type = "text / javascript"> </ script></font></font><font></font><font><font>
> <Script </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Src = "/ _ Reports / PortalPage / Resources / PortalPage.js?</font></font><font></font><font><font>
> 20141230 "</ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > Type = "text / javascript"> </ script> </ body> </ html> <script type = "text</font></font><font></font><font><font>
> / Javascript "> var </ font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > _page = </ Font> </ font> <font> </ font> <font> <font></font></font><font></font><font><font>
> > {'Chìa khóa': '0cZoQYuB / DDhEw0CNKuvNg ==', 'RemoveOnlineList': true, 'multiple</font></font><font></font><font><font>
> than ':' Nhiều hơn ... "}; </font><font></ Script> </ font> </ font></font></font><font></font>
> https://mb.b88ag.com/%28S%28yy3b2annsq2ya3t5ekumptdk%29%29/index.aspx
*
* Tạo 20110707 @ Simon - chức năng Javascript để bật lên thông báo.
* Revision? @? - ...
*
Message from casinobong88@gmail.com
2015-03-16T21:50:35+00:00casinobong88urn:md5:c77007dd2859cbcf4e3fe89cd50728a1
https://mb.b88ag.com/(S(k2k0pu3qnpxgd2r3usrzfocp))/index.aspx