How code refactoring can fix stack overflow error?

20:23
Sun
07
Feb 2016

How code refactoring can fix stack overflow error?

tl;dr: A very long C++ function with multiple local variables, even if they are not very big and they are placed in separate scopes, can reserve as much as hundreds of kilobytes of stack frame, causing "Stack Overflow" even without bugs like infinite recursion. So you better split your long functions into shorter ones.

Can refactoring (or the lack of thereof) cause application crashes? If we understand refactoring as changes in code layout without changing its logic, we might think that it's just the matter of readability and unreadable code increases chances of introducing bugs. But here is a story in which refactoring actually fixed a bug.

Long time ago in a software project far far away, there was a bug submitted telling that the application crashes with "Stack Overflow" message. It was a Windows app, developed in C++ using Visual Studio. I thought: - I can handle that, it should be easy! Every beginner/intermediate programmer knows about the call stack and surely seen this error at least once when accidentally caused infinite recursion in his code. So my first idea was that infinite recursion happens because of some logical error in the code (that should be easy to fix) or some unfortunate, invalid input data (that should be validated for safety before usage).

As it turned out, this was not the case. After setting up all the test environment and catching the crash in Visual Studio debugger, I looked at Call Stack and noticed that it looks quite normal. Sure the call depth was significant (as for C++, I'm not talking about Java here ;) and there was even some recursion, but 20 or 30 functions is not that much. The stack ended with a call to non-recursive function that seemed correct, so it was not the recursion that caused stack overflow.

My second idea was that some of these functions allocate some big objects (like arrays) by value, as local variables on the stack and this causes the stack to grow too big. I reviewed code of the functions that I found on the stack and used "Immediate Window" panel to quickly check sizeof(xxx) of variables or their types when they used some class, but I didn't find anything particularly big. Local variable sizes varied from few bytes to at most several hundred bytes and I couldn't find any big arrays defined in these functions. I also fetched address of some local variable in a function near the bottom of the stack (which looks like 0x000000000009a370), address of a parameter from the function at the top of the stack and subtracted them to see how big the stack grown over all these calls. The result was around 50 KB - not that much.

My third idea was to check maximum size of the stack. It is 1 MB by default, but it can be changed in Visual Studio project settings, in Linker > System tab, as "Stack Reserve Size" parameter. I check my project and I found this parameter not changed from its default value.

OK, now this became more difficult than I thought. After many debugging sessions, where I looked at various pointers, addresses and numbers trying to spot some memory override, stack corruption, out-of-bounds indexing etc., I finally opened "Disassembly" and "Registers" panels. I'm not a fan of such low level stuff, so it took me some time and few Google queries to understand these RSP, RBP registers and make sense of some x86-64 opcodes. While debugging step-by-step in the assembly, I found something interesting. At the beginning of my function, there was a call to mysterious function __chkstk and the crash occurred inside it. That was a clue I could use to ask Google what this all means. I found this: Description of the stack checking for Windows NT-based applications and this: What is the purpose of the _chkstk() function? These articles say that as the stack grows, next 4 KB pages are reserved. Each next page is allocated by the system on first "touch". I could actually see in my debugger that functions which need less than 1 page (4096 B = 1000h) have an instruction at the beginning similar to this:

sub         rsp,0A9h

While my debugged function had this instead:

mov         eax,26B29h
call        __chkstk (018104AA00h)
sub         rsp,rax

The articles say that when reserving more than one page of stack memory, this function must be called to loop over addresses with 4 KB step and "touch" each page. This is really what it does:

--- f:\dd\vctools\crt\crtw32\startup\amd64\chkstk.asm ---
sub         rsp,10h
mov         qword ptr [rsp],r10
mov         qword ptr [rsp+8],r11
xor         r11,r11
lea         r10,[rsp+18h]
sub         r10,rax
cmovb       r10,r11
mov         r11,qword ptr gs:[10h]
cmp         r10,r11
jae         cs10+10h (018104AA40h)
and         r10w,0F000h
lea         r11,[r11-1000h]
mov         byte ptr [r11],0
cmp         r10,r11
jne         cs10 (018104AA30h)
mov         r10,qword ptr [rsp]
mov         r11,qword ptr [rsp+8]
add         rsp,10h
ret

Key sentence of the second linked article seems to be: "The parameter in rax is size of data you want to add." In my case, eax is set to 26B29h = 158505. Wait, what?! This is more than 150 KB! Is it really how much of the stack the function needs?!

It was finally the right conclusion. The function was more than 3000-lines long, with lots of nested conditions and all kinds of stuff, but mostly an all-encompassing switch with dozens of different cases. I refactored it, extracting code from under each case to a separate function. This fixed the "Stack Overflow" crash.

Apparently if you have a long function and define a lot of local variables, even if they are not particularly big and they are placed inside separate scopes like if-s or switch case-s, the function may need as much as 150 KB of stack frame, at least in Debug configuration. This can cause crash with "Stack Overflow" message even without infinite recursion or bugs like that. So please keep this in mind as additional argument for refactoring your code as soon as you see the need for it.

Comments (2) | Tags: visual studio c++ | Author: Adam Sawicki | Share

Comments

yll
2016-03-25 03:43:50
If you http://www.soccer-shoes.us.com/ are http://www.new-balance-schuhe.de/ happy temperament, I http://www.nike-roshe-run.de/ have a http://www.louboutin.jp.net/ song, http://www.michael--kors.us.com/ dance with http://www.vans-shoes.net/ your http://www.newbalance.com.es/ favorite http://www.tory-burchshoesoutlet.net/ look; http://www.pulseras-pandora.com.es/ if you http://www.jordan-shoes.com.co/ rife, I will http://www.reebok.com.de/ become a cloud, http://www.michael-kors-outlet-online.us.org/ falling http://www.abercrombie-fitchsale.com/ some http://www.polo-ralph-lauren.de/ peerless http://www.new-balance.ca/ situation; http://www.michael-kors-canada-outlet.ca/ for http://www.pandora-charms.org.uk/ this http://www.eyeglassesonline.us.com/ flower http://www.thomas-sabo.com.de/ Dimei under http://www.tomsoutletonline.net/ Xu, http://www.nike-shoes-canada.ca/ Xu next http://www.soft-ballbats.com/ stop for http://www.ugg-bootsclearance.com/ this http://www.nike-roshe-run.com.es/ cloud, http://www.michaelkorsoutlet-online.ar.com/ let that http://www.michaelkorsoutlet.ar.com/ drop http://www.katespadeoutlet.gb.net/ of http://www.burberry-outlets.co.uk/ rain touched http://www.toms-outlets.us.com/ that http://www.burberry-handbags2016.in.net/ masterpiece http://www.rolex-watch.me.uk/ encounter; not to http://www.designerhandbagsoutlet.net.co/ ask, in http://www.michaelkorsoutletonline-sale.us.com/ the http://www.thejoreseproject.com/ southern misty http://www.thomas-sabos.org.uk/ rain http://www.instylers.us.com/ ink, or http://www.airhuarache.co.uk/ vegetation http://www.cheap-jordans.net/ desolate http://www.guccishoes.com.co/ Saibei http://www.burberryoutlet-canada.ca/ only hope that http://www.maccosmetics.net.co/ you read http://www.rayban-wayfarer.in.net/ in http://michaelkors.euro-us.net/ conjunction rain Partly http://www.michaelkors.com.se/ farming, http://www.michael-kors.com.co/ leisure http://www.longchamp.com.de/ together http://www.juicycouture.com.co/ Immersió http://www.toms-shoes.com.co/ listen http://www.edhardy.us.org/ to http://www.coach-outletonline.net.co/ the http://www.ralphslauren-outlet.co.uk/ birds, http://www.hollister-clothing.in.net/ over http://www.mcmsworldwide.com/ the http://www.oakley-sunglassoutlet.net/ days http://www.ralphlaurenpolos.in.net/ together http://www.vans-shoes.co.uk/ with http://uggaustralia.misblackfriday.com/ ordinary http://www.asicsgels.de/ water .

If http://www.coachhandbags2016.us.com/ grinding http://www.oakleyoutlet-online.us.com/ moonlight, http://www.chanelhandbags.net.in/ the http://www.oakley-sunglasses.mex.com/ wind pen, http://www.tnf-jackets.us.com/ next http://www.adidas.com.se/ month before it http://www.tiffany-und-co.de/ flowers, pen years http://www.tommy-hilfigeroutlet.com/ water volume; http://www.michael-kors-taschen.com.de/ with http://www.nike-air-max.com.de/ traces http://www.burberryonlineshop.de/ breeze atmosphere, http://www.insanity-workout.us.com/ clouds, http://www.tomsoutlet-online.com/ and http://www.montblanc--pens.in.net/ in http://www.timberlandbootsoutlet.us.com/ a http://www.thenorthface.com.de/ paper http://www.coach-purseoutlet.net/ by http://www.coachoutletstore.net.co/ the http://www.louisvuittons.com.co/ recollection http://www.air-max.com.de/ of http://www.prada.com.de/ old books http://www.tommyhilfiger.net.co/ you http://www.juicycoutureoutlet.net.co/ warm; http://www.retro-jordans.com/ make clear http://www.burberry-outletonlinesale.in.net/ water http://www.bottegaveneta-bagsoutlet.com/ in http://www.jimmy-chooshoes.com/ Qiannian http://nike.shoesoutlet.us.com/ landscape http://www.handbagsoutlet.net.co/ outside, http://www.chi-flatiron.us.com/ waiting http://www.supra-shoes.org/ for http://www.vans-schuhe.com.de/ the http://airmax.shoesoutlet.us.com/ moon http://www.hollister.us.org/ and http://www.celine-bags.org/ new moon; http://www.swarovski--uk.me.uk/ quietly http://www.rolexwatches-canada.ca/ spend http://www.truereligion-outlet.us.org/ the http://www.replica-handbags.in.net/ joy http://www.ugg-boots.us.org/ of silence, http://www.newbalance-outlet.org/ do http://www.ralphlaurenoutletonline.in.net/ not http://www.chiflatiron.net.co/ ask http://www.cheap-michaelkors.com/ how http://www.michael-kors-outlet.us.org/ changes of http://www.polooutlets-store.com/ marshes, http://www.coco-chanels.us.com/ how http://www.truereligion-outlet.com.co/ rotary http://www.oakleys-glasses.us.com/ years, http://www.louis-vuitton-australia.com.au/ the http://www.fashionclothes.us.com/ only http://www.horloges-rolex.nl/ place in the http://www.cheap-raybans.com/ bridges http://www.oakley-outletstore.in.net/ for http://www.uggs.co.nl/ you http://www.lululemoncanada.ca/ as I http://www.jordanrelease-dates.us.com/ ended http://www.guccishoes.us.org/ classic.

Life would http://www.christianlouboutinshoesoutlet.org/ like to http://www.yoga-pants.ca/ make http://coachoutlet.euro-us.net/ the http://www.longchamp-handbagsoutlet.us.com/ dust http://www.nikeair-max.es/ of a http://www.toryburchsale.com.co/ lotus, the http://www.p90xworkout.us.com/ mountain http://www.coachblackfriday.com/ waiting http://www.christian-louboutinshoes.com.co/ for http://www.canadagooses-2016.com/ a http://www.christianlouboutinshoes.jp.net/ ride http://www.ferragamoshoes.in.net/ a water http://www.asics-outlet.us.com/ ride http://www.cheap-oakleyglasses.us.com/ with a http://www.ralphs-lauren.co.uk/ window http://www.canada-goosesjackets.us.com/ the bright window, the http://www.barbour-jacketsoutlet.com/ sun was http://www.converse.com.de/ warm embrace, http://www.abercrombieand-fitch.ca/ Wan http://www.uggsoutlet.com.co/ Wan in a new http://monsterbeats.co-om.com/ Green http://www.nfl-jersey.us.com/ Mile, http://www.cheapoakley-sunglasses.in.net/ this life http://www.beatsbydrdre.co.com/ filled http://www.thenorth-faces.co.uk/ with love; http://www.swarovskicanada.ca/ make http://www.ralphlaurenoutlet-online.us.com/ a http://www.salomon-schuhe.com.de/ colorful http://www.pradahandbags.net.co/ in full bloom throughout http://www.louisvuitton.jp.net/ the http://www.moncler-outlet.us.org/ spring, to meet a beautiful http://www.timberlandshoes.net.co/ painting http://www.pandorajewelry.top/ on http://www.nikestore.com.de/ the http://www.nike-shoesoutlet.us.com/ successful!

A http://www.adidasshoes.top/ tea seats bed, http://www.michaelkors-uk.org.uk/ a http://www.guccihandbags.net.co/ pillow http://www.swarovskijewelry.com.co/ Scrolls fine http://www.ugg-boots-australia.com.au/ ponder. This http://www.nike.org.es/ is a http://www.adidas-superstar.nl/ simple literature, http://www.ralphlaurenonlineshop.de/ this http://www.burberry-outlet.net.co/ is http://coach.euro-us.net/ the http://www.rayban.org.es/ classic http://www.babyliss-pro.us.com/ psychic, http://www.hollister-abercrombie.com.se/ regardless http://www.nike-huarache.nl/ of http://www.cheapmichaelkors.us.org/ gem http://www.beatsbydre.com.co/ material, http://www.kate-spade.in.net/ regardless of http://www.raybans.us.org/ the http://www.cheapshoes.com.co/ net http://www.coachoutletstore-online.com.co/ worth of http://www.lululemonoutlet.gb.net/ the http://www.lululemon-australia.com.au/ poor, because http://www.nike-schoenen.co.nl/ the http://airhuarache.shoesoutlet.us.com/ share http://www.designer-handbagsoutlet.us.com/ of hazy http://www.louis-vuittonblackfriday.com/ love, love deep into http://www.nikestore.us/ the http://www.guccioutlet-sale.in.net/ soul.

This http://www.longchampoutlet.com.co/ literary love, http://www.pumaonline-shop.de/ love http://www.abercrombie-hollister.nl/ this http://www.swarovski-australia.com.au/ millennia-old http://www.true-religion.com.co/ Chinese soul of the wind. http://www.prada-shoes.com.co/ Or vigorous, soul-stirring, http://www.oakley.com.de/ like http://www.nikefree5.net/ Longyou http://www.coach-factoryoutlet.net.co/ song http://www.christian-louboutin-shoes.ca/ marsh, http://www.michaelkors.so/ Huang http://www.oakley--sunglasses.com.au/ Fei http://www.guccishoes-uk.co.uk/ nine days; or http://www.louisvuitton.so/ single http://www.nikefree-run.net/ elevation grid, http://www.burberry-handbagsoutlet.com.co/ noble http://www.mizuno-running.net/ Aoshuang, like http://www.abercrombie-fitchs.us.com/ Pine http://www.tommy-hilfiger.com.de/ Valley http://www.michael-kors.com.es/ Health, Xia http://www.toms-shoes.net.co/ Ying http://www.gucci-outletstore.com/ Cheng http://www.hermesbirkin-bag.net/ Tong; http://www.ray-ban-outlet.us.com/ or http://www.pumashoes.in.net/ want to go http://www.jordanretro.org/ think, therefore, http://www.tiffany-andco.com.au/ become lazy Ke Zhou, http://www.hermes-outlet.com.co/ Shen http://www.mmoncler-outlet.com/ round like http://www.basketballshoes.com.co/ the http://www.michael-kors.net.co/ moon http://www.chanel-bags.com.co/ and http://www.ugg-boots.ca/ stars, the http://www.cheap-baseballbats.net/ rivers http://www.air-huarache.co.uk/ into http://www.michaeljordan.com.de/ the http://airmax.misblackfriday.com/ ocean; or plaintive http://www.airmax-2015.org/ blurred, http://www.airmax-90.org/ cold http://www.tommy-hilfiger.co.nl/ hesitation, http://www.rolex-watches.us.com/ like http://www.bcbg-max-azria.ca/ Su Yi http://www.ralphlaurenoutlet.us.com/ impermanence, http://www.the-northface.net.co/ cold feast http://www.adidas--canada.ca/ next http://www.giuseppezanotti.com.co/ month. http://www.hermesbags.jp.net/ Let http://www.oakleys-sunglasses.us.com/ him http://www.salvatoreferragamo.in.net/ how Mind, http://www.gucci-taschen-outlet.de/ only http://www.tommyhilfigeroutlet.in.net/ for http://www.levisjeans.com.co/ the http://www.nikefree-run.org.uk/ love http://www.rolexwatchesforsale.us.com/ affair Everlasting, http://www.rayban.co.nl/ the text http://www.cheap-nike-shoes.net/ from http://www.uggs-onsale.net/ the heart http://www.louisvuitton-outlets.us/ Think http://www.ugg-australia.com.de/ that summer, http://www.mcmhandbags.com.co/ a http://www.iphone-cases.net.co/ column Chen Xiang http://www.outlet-burberry.net.co/ a cool http://www.nikemercurial.in.net/ pillow, http://www.uggsaustralia.com.co/ which http://www.rayban-sunglassesoutlet.co.uk/ is http://www.michael-kors-handbags.us.com/ the http://www.replica-watches.com.co/ roots http://www.lauren-ralph.co.uk/ of what you need http://www.rosheruns.us/ to http://www.tiffany-jewelry.net/ make tea http://www.newoutletonlinemall.com/ cooking wine, http://www.michaelkors-outlet-online.com.co/ Hongxiutianxiang http://www.michaelkors.co.nl/ just hand poetry http://www.nike-air-max.us/ twos http://www.oakley-sunglasses-canada.ca/ Bliss http://www.beats-headphone.com.co/ half http://www.oakley.org.es/ a http://www.rosherun.org.uk/ day http://www.michaelkorsbags.us.org/ can http://www.tommy-hilfiger-canada.ca/ tolerate you http://www.marcjacobs.us.com/ wander. http://www.ralphlaurenepolo.com/ Static http://www.prada-handbags.com.co/ water body, http://www.uggboots.net.co/ Shen http://www.hollisteronlineshop.com.de/ soul http://supra.shoesoutlet.us.com/ dream, http://www.toms-shoesoutlet.net/ it http://www.mkoutletonline.us.com/ is http://www.nikeskos.dk/ only http://www.louis-vuittonoutletcanada.ca/ a http://www.nike-schuhe.com.de/ few http://www.ugg-uggboots.net/ clouds http://www.thenorthfacejackets.net.co/ color http://www.beats-by-dre.com.co/ country http://www.hollisterclothingstore.org/ Pitt, http://northfaceoutlet.co-om.com/ rivers and http://www.christianlouboutinoutlet.net.co/ mountains, http://www.eyeglassframes.in.net/ jade http://www.converse-shoes.net/ group. Do http://www.nike-air-force.de/ not http://www.toryburch-sandals.in.net/ ask bustling http://www.omega-watches.us.com/ past, gone; do not http://www.adidas-superstar.de/ ask http://michaelkors.co-om.com/ flowery http://www.nike-free-run.de/ Meijuan, http://www.giuseppe-zanotti.net/ Homecoming, http://www.tiffanyandco-canada.ca/ heart http://www.pandorajewellery.com.au/ like hanging a mirror, http://www.burberry-outletstore.net/ according http://www.tommy-hilfiger-online-shop.de/ to Italian http://www.michael-kors-australia.com.au/ Bodhi http://www.burberrybags-outlet.com/ station.

Three thousand http://www.pandora-charms-canada.ca/ Red http://www.hogan.com.de/ ink, http://www.coachoutlet-online.com.co/ as http://www.ray--ban.ca/ are cold-blooded http://www.harrods-london.co.uk/ bustling http://www.woolrich-clearance.com/ paper, http://www.tocoachoutlet.com/ into a word discretion. http://www.louis-vuitton-taschen.com.de/ Five http://www.airjordans.us/ thousand http://www.converse-shoesoutlet.com/ years http://www.ferragamo.com.co/ of http://www.cheapjerseys.com.co/ calligraphy http://www.burberryoutlet-sale.in.net/ love this, http://www.weddingdressesuk.org.uk/ love http://www.swarovski-crystal.us.com/ flames smoke http://www.mk-outlet.us.com/ sand http://www.coco-chanel.com.de/ which http://www.bottega-veneta.us.com/ contained http://www.christianlouboutin.org.uk/ five thousand http://www.adidas.org.es/ years. http://www.ghd-hairstraightener.net/ Regardless http://www.uggboots.com.de/ of the http://www.ralphlaurenoutletonline.us.org/ time, http://www.louisvuitton-outlet.com.co/ and http://www.coach-factoryyoutletonline.net/ regardless http://www.ralph-laurenoutlet.ca/ of http://www.longchamphandbagsoutlet.net/ age http://www.cheapoakley-sunglasses.com/ just http://www.oakleysunglasses-cheap.in.net/ enthusiastic, http://www.nikeshoesoutlet.org.uk/ you can play the http://www.omegarelojes.es/ most http://www.ralph-lauren.com.au/ beautiful music http://www.hollisters-canada.ca/ in http://www.newbalance-shoes.org/ the soul. http://www.guccishoes.in.net/ Born http://www.nike-air-max.ca/ This http://www.tomsshoes-outlet.us.com/ paper http://www.burberryoutlet2016.us.com/ declared the http://www.christian--louboutin.in.net/ era http://www.burberrysoutlet2016.com/ of http://www.coach-factory.in.net/ thick ink, http://www.truereligionjeans.net.co/ it http://www.barbour-factory.com/ is http://www.uhren-shop.com.de/ really Qing http://www.ralph-laurens.org.uk/ Sansei http://www.burberry2016.co.uk/ lucky, http://www.nikefactory.org/ I http://mcmbackpack.co-om.com/ have http://www.maccosmetics.gr.com/ the http://www.pradaoutlet.com.co/ edge. http://www.calvin-kleins.us.com/ Not http://www.cheapjerseys.us.org/ to http://www.nikerosherun.us/ think http://www.the-northface.com.co/ about what http://www.longchamp.com.co/ flat http://www.tiffanyandco.net.co/ Zeze, http://www.toms--outlet.com.co/ do not http://www.longchamp.us.org/ repair what suppression http://www.nike-air-max.com.se/ suppression http://www.cheapuggboots.us.com/ triumphantly, play with http://www.the-north-face.ca/ my http://www.cheaprayban.com.co/ ink, http://www.converse.net.co/ paper http://www.raybans-sunglassesoutlet.in.net/ and http://www.swarovski-online-shop.de/ ink, http://www.rayban-sunglasses.us.org/ ink into http://www.toryburchoutlet-sale.us.com/ song. http://www.abercrombie-and-fitch.us.com/ Wenbujiadian, http://www.michael-korshandbags.org.uk/ Tengjiao Qifeng. http://www.louis--vuitton.org.uk/ Three http://www.bebeclothing.in.net/ feet http://www.pandora.com.de/ of white Xuan, http://www.adidas-schuhe-online.de/ lead me http://www.poloralphlaurenoutlet.net.co/ thousand http://www.bcbg-dresses.com/ words mantra; http://www.the-northfacejackets.us.com/ five http://www.nike-rosherun.nl/ bucket heavy http://www.kate-spade.gb.net/ color, http://www.zxcoachoutlet.com/ any time I wanton http://www.rayban.com.de/ chapters. http://www.polo-outlets.com.co/ Wenqi http://www.nike-skor.com.se/ thunder, http://www.yoga-pants.net.co/ put http://www.uggs.in.net/ pen http://www.wedding--dresses.ca/ to http://www.mcmbags.net/ paper to http://www.jimmy-choos.com/ stay http://www.mcm-bags.in.net/ hui, was http://www.longchamp-handbags.us.com/ widely http://www.nike-air-max.com.au/ bully http://www.northfaceoutlet.com.co/ Zimei, bearing http://www.abercrombie-kids.us.com/ pressure Bai.
dsagdsa
2016-03-29 09:46:03
<a href=http://girl7788.com.tw/>&#22806;&#36865;&#33590;</a>
<a href=http://sexy520.com.tw/>&#21488;&#21271;&#22806;&#36865;&#33590;</a>
<a href=http://520lg.com.tw/>&#20813;&#36027;&#25104;&#20154;&#24433;&#29255;</a>
<a href=http://love.911fish.com/>&#22806;&#32004;</a>
<a href=http://cbd.911fish.com/>&#22806;&#36865;&#33590;&#33674;</a>
<a href=http://twav8d.com/>&#20813;&#36027;&#25104;&#20154;&#38651;&#24433;</a>
<a href=http://momotea.com.tw/>&#21488;&#21271;&#22806;&#36865;&#33590;&#33674;</a>
<a href=http://www.meettours.com.tw/>&#21451;&#36948;&#26053;&#34892;&#31038;&#34218;&#36039;</a>
<a href=http://comeimei.com.tw/>&#25104;&#20154;&#25991;&#23416;</a>
<a href=http://chajiaoliu.com/>&#22806;&#36865;&#33590;</a>
<a href=http://bobonice.com/>&#33590;&#35338;</a>
<a href=http://51chiyu.com/>&#25588;&#20132;</a>
<a href=http://funygirls.com/>&#21322;&#22871;</a>
Idsgaklj.<a href=http://loveavgirl.com/>&#20276;&#36938;</a>
<a href=http://twcoco.com/>&#20840;&#22871;</a>
<a href=http://line78.com/>&#25214;&#23567;&#22992;</a>
<a href=http://chayuxun.com/>&#20840;&#22871;</a>
<a href=http://52nila.com/>&#25033;&#21484;</a>
<a href=http://www.911fish.com/>&#22806;&#36865;&#33590;</a>
<a href=http://www.dayniceing.com.tw/>&#25588;&#20132;</a>
<a href=http://www.niuniu.com.tw/>&#22806;&#36865;&#33590;</a>
<a href=http://www.topkason.com/>&#21483;&#23567;&#22992;</a>
<a href=http://www.iqk520.com/>&#20840;&#22871;&#26381;&#21209;</a>
<a href=http://love2mm.net>&#22806;&#36865;&#33590;</a>
<a href=http://www.xm-zpw.com/>&#25214;&#33590;</a>
<a href=http://outertea.com/>&#22806;&#36865;</a>
<a href=http://www.94ilove.com/>&#25588;&#20132;</a>
<a href=http://www.ilove-gg.com/>&#19968;&#22812;&#24773;</a>
<a href=http://www.line4000.com/>&#25588;&#20132;</a>
<a href=http://in-mm.com/>&#25588;&#20132;</a>
<a href=http://www.kennyleo.com.tw/>&#24503;&#24030;&#25778;&#20811;&#36938;&#25138;</a>
<a href=http://by.kennyleo.com.tw/>&#21338;&#24328;&#36938;&#25138;</a>
<a href=http://www.paogotime.com.tw/>&#21338;&#24328;&#36938;&#25138;</a>
<a href=http://www.playxxoo.com.tw/>&#30334;&#23478;&#27138;</a>
<a href=http://www.mybingo.com.tw/>bar&#27700;&#26524;&#30436;&#36938;&#25138;</a>
<a href=http://www.mmm-tw.com.tw/>&#21338;&#24328;&#36938;&#25138;</a>
Idsgaklj.http://girl7788.com.tw
http://sexy520.com.tw
http://520lg.com.tw
http://love.911fish.com
http://cbd.911fish.com
http://twav8d.com
http://momotea.com.tw
http://www.meettours.com.tw
http://comeimei.com.tw
http://51chiyu.com
http://bobonice.com
http://chajiaoliu.com
http://911fish.com
http://52nila.com
http://chayuxun.com
http://line78.com
http://twcoco.com
http://loveavgirl.com
http://funygirls.com
http://www.dayniceing.com.tw
http://www.topkason.com
http://www.dayniceing.com.tw
http://www.xm-zpw.com
http://www.love2mm.net
http://outertea.com
http://www.94ilove.com
http://www.ilove-gg.com
http://www.line4000.com
http://in-mm.com
http://www.kennyleo.com.tw
http://by.kennyleo.com.tw
http://www.paogotime.com.tw
http://www.playxxoo.com.tw
http://www.mybingo.com.tw
http://www.mmm-tw.com.tw

Post comment

Nick *
Your name or nickname
E-mail
Your contact information (optional, will not be shown)
Text *
Content of your comment
Calculate *
(* - required field)
STAT NO AD [Stat] [Admin] [STAT NO AD] [pub] [Mirror] Copyright © 2004-2017 Adam Sawicki
Copyright © 2004-2017 Adam Sawicki