十多天后,李离率军撤离汉中,把汉中郡能抓到的居民全部强迫迁入成汉国境。等李离撤离以后,汉中人句方、白落,率领残留下来的官民回到南郑固守。而成汉帝国的大军撤离以后,李雄留下平寇将军李凤,驻防在晋寿(四川省广元市西南),不断骚扰汉中,因此,不少汉中居民向东逃亡,进入荆州。此时,受司马顒的派遣前往荆州地区的张光已经协助陶侃等人讨平了陈敏弟弟陈恢对荆州的进攻,陈敏随即被江东顾荣、周玘等人消灭,于是,晋政府任命张光为梁州刺史,而让刘弘的儿子接替张光刘璠任顺阳郡(河南省淅川县东南)内史。
张光从南阳地区西上到达魏兴以后,召开了形势讨论会。会上,张燕先唱悲叹调,他说:“汉中荒败,接近大贼,恢复大业,还是等英雄到来吧。” 杜孟治一针见血地说:“张燕接受敌人的金银,没有及时进讨,顿兵不进,致使失去了汉中,这的确是张燕之罪。”张光大怒,立即让帐下刀斧手将张燕拖出去斩首示众。
于是,张光还镇汉中,辛苦地经营着荒残的汉中地区。
到了永嘉3年,即309年的10月,天水郡人訇琦(应该是去年投降的訇氐的族人)、张金苟、略阳人罗羕等击斩成汉帝国太尉李离、尚书令阎式,占据梓潼郡(四川省梓潼县),归降驻屯巴郡(重庆市)的晋益州刺史罗尚。李雄派太傅李骧、司徒李云、司空李璜,反击訇琦、罗羕等人,李云、李璜(二人均为李雄的堂弟)战败被杀,12月,訇琦等人把李离的家眷送到罗尚那里,罗尚将他们全部处斩,并瓜分了李离的家产。
形势逐渐朝晋王朝的一边好转。
在成都北面的梓潼回归晋王朝不久,在梓潼南面更靠近成都的涪城(四川省绵阳市)又发生了变故。最初,谯周有一个儿子谯熙住在巴西郡(四川省阆中市),成汉帝国巴西郡太守马脱,不知道什么原因把他诛杀了。谯熙的儿子谯登东去荆州,晋见晋都督荆州诸军事刘弘,请求刘弘派军为其复仇。刘弘也没有多余的军队,于是,他上书中央,任命谯登为扬烈将军、梓潼内史,让他自行招募流亡在荆州的巴蜀难民,去报杀父之仇。谯登集结了二千人西上还乡。这行人马先到达巴郡,请求罗尚拨付一部分部队,罗尚不肯。谯登遂单独进军,攻陷宕渠(四川省渠县东北三汇镇),擒斩了马脱,谯登挖出马脱的肝脏,亲口吞食下去。谯登又向罗尚请求援军,但是,罗尚的手下畏首畏尾,以为肯定难以取胜,拒不增援,谯登又气又恨,反复劝说罗尚,罗尚就是不听。而这时,正巧訇琦、张金苟、罗羕拿下了梓潼郡,于是,谯登遂率军占领了梓潼郡下属的涪城县。成汉皇帝李雄御驾亲征,却被谯登击败。涪城、梓潼相继反正以后,处于两地东北面的巴西郡(四川省阆中市)陡然处于孤立无援的境地。310年初,看到处境险恶,李国的帐下将文石心生动摇,就击斩了在此镇守的是成汉帝国太尉李国,献出巴西郡,归降了罗尚。
短短几个月之间,成汉帝国相继失去了数员大将,形势大坏。罗尚手下的折冲将军张罗也配合两处,率军进驻犍为郡的合水(今彭山江口)。罗尚另遣大将向奋进屯益州安汉(四川省南充市),李雄亲帅大军攻击,却被向奋击败。当地民间歌谣说:“谯登治涪城,文石在巴西,张罗守合水,巴氐哪得前。”
然而,好的形势并没有持续多久。
李雄对他的部将张宝说:“你如果能夺回梓潼,我就把李离的太尉官位赏给你。”
重赏之下必有勇夫。张宝遂先杀人逃亡,投奔梓潼,骗取了訇琦的信任。正好,罗尚的使节前来,訇琦等人出城迎接;张宝在背后关闭了城门,轻松拿下了梓潼。訇琦无奈,只好投奔巴西郡的文石。李雄没有食言,随即任命张宝为太尉,梓潼的陷落,立即使涪城处于南北夹攻的险恶境地。不过,比这更严重的事情又发生了:就在这节骨眼上,310年7月,益州刺史、平西将军、西戎校尉罗尚在重庆去世了!
司马炽任命长沙郡(湖南省长沙市)太守皮素接任罗尚的职务,统领义军及罗尚平西军旧部,命他进驻三关(指巴西、涪城、合水),加强防务。
这时,李骧受李雄之命加紧进攻涪城的谯登。情况紧急,皮素由长沙入蜀,抵达巴东以后,就下令罗尚的大将张顺、杨显前往救援谯登。罗尚之子罗宇平时就十分厌恶谯登,不给他提供粮草,皮素得知此情以后,打算到了涪城再惩办主管粮草的相关官员。12月,当皮素抵达巴郡以后,降将天水人赵攀、阎兰等在夜里将皮素暗杀了——不言自明,背后一定是罗宇指使。皮素被杀后,建平郡都尉暴重又杀了罗宇和赵攀,一时间巴郡内部大乱,根本顾不上出兵救援谯登。暴重杀掉罗宇以后,平西将军、益州刺史、西夷校尉三府的部下共同推举巴东郡监军韩松为益州刺史、西夷校尉,并把“三府”的政府所在地从重庆东迁到了治巴东(今奉节)。
李骧得知谯登粮食已尽,援军又绝,对涪城的攻击更为猛烈。城内无粮可吃,人们用烟火把洞穴中的老鼠熏出来,逮住烤熟吞食,老鼠有限,饿死的人还是很多,但是,自始至终没有人叛离。此时,李骧的儿子李寿被抓在涪城,仗义的谯登把李寿送回给李骧。到永嘉五年(311年)1月,围困涪城数月之久的李骧军,终于攻下了涪城,然后,成汉帝国军队乘胜东进,太保李始又攻陷巴西郡(四川省阆中市),斩了晋守将文石。于是,成都北面的巴西、梓潼又被李雄收复。谯登被押解到了成都,李雄本来想着释放了他,但是,谯登决不投降,李雄将其斩首,把俘虏的军士全部作为奴隶,分配给自己的士兵。然而,老天却接连下了100多天的雨,李雄向来迷信,以为这是上天对杀害谯登的报应,赶紧恢复了谯登被俘士兵的自由。
世事难测。
这时,荆州、湘州地区也发生了杜弢的流民起义,原来从李雄阵营中投降的氐人符成、隗文在宜都(湖北省枝城市)作乱,率众西上进入巴东。李雄又派兵进攻僰道,犍为太守魏纪逃走,江阳太守姚袭被杀,解除了成都南面的威胁。李雄下诏大赦,改年号为玉衡。
311年2月,晋建平郡(重庆市巫山县)都尉暴重迎战进入巴东的符成、隗文乱民,但没有取胜;接着,他利用出军之机,击斩刚刚上任不久的益州刺史韩松,自领平西将军府、益州刺史府、西戎校尉府“三府”事。很快的,巴东各将领又合力诛杀了暴重,共同推荐巴郡太守张罗行“三府”事。张罗驻守枳县,率军讨伐隗文,隗文战败投降。但是,隗文投降一个月后随即又发动叛乱,并捉住了巴郡太守黄龛,逼他一起造反。黃龛见情况危急又走投无路,想自杀了事,主簿杨预劝说道:“隗文才是造反的元凶,大家都知道,他们软禁您,外面的人谁不害怕,他们奉你为主,谁会相信呢?应当想办法让张将军知道你的忠诚,为什么要自寻短见呢?”黄龛说:“贼军已经封锁了道路,如何才能使张罗知道呢?”杨预于是替黄龛给张罗写了封信,派其弟逃出去见张罗。张罗说:“黄龛的忠心,我是知道的。”隗文得知此事以后,大怒,囚禁了黄龛,捉住杨预,盘问派人送信的情况。黄龛说:“我们没有派人送过信。”隗文就对杨预严刑逼供,一直拷打至死,杨预始终什么也没说。隗文本想杀掉黄龛,但因杨预被打死,隗文被杨预的忠义所感动,也就放过了黄龛。张罗派兵讨伐隗文,却战败而回;张罗亲自率军前去讨伐,也战败被杀。接着,隗文就占领了巴西,他驱赶巴西的官民全部西上投降李雄,巴地再也没有人烟了。
残留的“三府”文武官员共同推举平西将军司马王异代理三府事务,兼任巴郡太守,因为巴地残破,没有人烟,就于312年1月,将治所迁往涪陵郡。而此时北面的张光也将治所迁回到了汉中。经过这一番折腾,成都李雄的局面大好,南得汉嘉(今四川雅安)、涪陵,招来了不少逃难而来的群众,北面和东面的晋军仅仅自保,再也无力组织强有力的进攻了……